2009-08-19 27 views

Trả lời

10

IIRC:

Ruby Marshall không đảm bảo hoạt động trên các phiên bản Ruby khác nhau hoặc cùng một phiên bản Ruby trên các nền tảng khác nhau.

Bởi vì bạn có thể có các phiên bản Ruby khác nhau truy cập cùng một cột được tuần tự hóa, Rails triển khai thực hiện tuần tự hóa bằng YAML. Trong khi điều này là chậm hơn, nó đảm bảo cột tuần tự của bạn có thể được đọc bởi các phiên bản ruby ​​khác, ruby ​​trên các hệ điều hành khác và các ngôn ngữ lập trình khác.

4

Marhshalling và serializing là cả hai thuật ngữ chung mô tả cùng một nguyên tắc cơ bản. Bằng cách định nghĩa bất kỳ quá trình nào có thể mã hóa một đối tượng và các cấu trúc con phụ thuộc của nó thành thứ gì đó có thể được lưu như vậy tại một số điểm sau đó, nó có thể được khôi phục được gọi là serializing hoặc marshalling.

Có một chút làm rõ về cách những điều khoản này có thể khác nhau, nhưng thường là như nhau, trong Wikipedia: http://en.wikipedia.org/wiki/Marshalling_(computer_science)#Comparison_with_serialization

Sự khác biệt cụ thể về Ruby là được xây dựng trong mô-đun Marshal có sẵn cho bất kỳ ứng dụng nào, trong khi hỗ trợ tuần tự ActiveRecord chỉ dành riêng cho nền tảng Rails.

Vì ActiveRecord có phương pháp xê-ri hóa tích hợp chặt chẽ của riêng mình, nên thường sử dụng phương pháp này.

+2

Tôi phát hiện ra rằng serialization ActiveRecord thực sự chậm so với Marhal. – collimarco