Sự khác biệt giữa marshaller và serializer là gì?


20

... và không sắp xếp / khử lưu huỳnh? Lời giải thích của Wikipedia để lại cho tôi sự khôn ngoan hơn! Tôi là một lập trình viên Java, trong trường hợp thuật ngữ được sử dụng khác nhau trong các ngôn ngữ khác nhau.

Câu trả lời:


30

Ngữ nghĩa rất quan trọng ở đây:

Marshalling ngụ ý di chuyển dữ liệu, nó không ngụ ý chuyển đổi dữ liệu từ biểu diễn hoặc lưu trữ gốc của nó. Các đối tượng Java có thể được chuyển qua dây trong biểu diễn gốc của chúng.

Tuần tự hóa ngụ ý chuyển đổi dữ liệu thành một số đại diện trung gian không bản địa. Ví dụ: chuyển đổi một đối tượng Java thành JSON hoặc XML.

Tất nhiên, hầu hết các hệ thống soái dữ liệu, Serialize nó vào một số định dạng không có nguồn gốc trước khi vận chuyển nó.


13

Câu hỏi này đã được hỏi trước đó, nhưng trên StackOverflow. Đây là liên kết.

Trích dẫn câu trả lời được đưa ra bởi Jeffrey Hantin :

Marsh Marsh và serialization là đồng nghĩa lỏng lẻo trong bối cảnh của cuộc gọi thủ tục từ xa, nhưng khác nhau về mặt ngữ nghĩa là một vấn đề của ý định.

Cụ thể, sắp xếp theo thứ tự là về việc lấy các tham số từ đây đến đó, trong khi tuần tự hóa là về việc sao chép dữ liệu có cấu trúc sang hoặc từ một dạng nguyên thủy như luồng byte. Theo nghĩa này, tuần tự hóa là một phương tiện để thực hiện việc sắp xếp theo thứ tự, thường là thực hiện ngữ nghĩa truyền qua giá trị.

Cũng có thể một đối tượng được sắp xếp theo tham chiếu, trong trường hợp đó, dữ liệu "trên dây" chỉ đơn giản là thông tin vị trí cho đối tượng ban đầu. Tuy nhiên, một đối tượng như vậy vẫn có thể tuân theo giá trị tuần tự hóa.

Như @Bill đề cập, có thể có siêu dữ liệu bổ sung như vị trí cơ sở mã hoặc thậm chí mã triển khai đối tượng.


2

Một Marshaller làm bất cứ điều gì cần làm, để tạo cấu trúc dữ liệu được vận chuyển từ nơi này sang nơi khác. Khi tôi nói về "Cấu trúc dữ liệu", nó có thể là bất cứ điều gì. Từ chính một đối tượng (dữ liệu trạng thái => giá trị trường) đến tham chiếu bộ nhớ đến đối tượng đó sẽ được xử lý phía máy khách bằng "Sơ khai" và ở phía máy chủ bằng "Proxy". Điều đó có nghĩa là Marshaller có thể sử dụng "Bộ nối tiếp" để chuyển đổi cấu trúc dữ liệu đó thành biểu diễn cấp thấp dễ vận chuyển hơn nhiều. Đường dẫn chuyển đổi có thể có các thành phần khác như Máy nén, Trình biên dịch, Bộ điều hợp, v.v ... Đối với tôi, Bộ nối tiếp là một phần của Marshaller.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.