Яка різниця між маршаловиком і серіалізатором?


20

... і зняття з продажу / десеріалізації? Пояснення Вікіпедії не залишають мене наймудрішим! Я програміст Java, якщо термінологія в різних мовах використовується по-різному.

Відповіді:


30

Тут важлива семантика:

Маршаллінг передбачає переміщення даних, воно не означає перетворення даних із власного представлення чи зберігання. Об'єкти Java можуть бути маршировані по дроту в рідному зображенні.

Серіалізація передбачає перетворення даних у якесь нероднє проміжне подання. Наприклад: перетворення об’єкта Java в JSON або XML.

Звичайно, більшість систем, які маршали дані, серіалізують їх у якийсь неродний формат, перш ніж їх транспортувати.


13

Це питання задавались раніше, але в StackOverflow. Ось посилання.

Цитата відповіді Джефрі Хантіна :

Маршалінг та серіалізація є синонімічними в контексті віддаленого виклику процедур, але семантично різняться за наміром.

Зокрема, маршалінг - це отримання параметрів звідти, а серіалізація - це копіювання структурованих даних у примітивну форму або з такої примітивної форми, як байт-потік. У цьому сенсі серіалізація - це один із засобів здійснення маршалінгу, як правило, реалізуючи семантику прохідних значень.

Можливо також об'єкт підлягати пошкодженню шляхом посилання, і в цьому випадку дані "на дроті" є просто інформацією про місце розташування для вихідного об'єкта. Однак такий об'єкт все ще може піддатися значенню серіалізації.

Як зазначає @Bill, можуть бути додаткові метадані, такі як розташування бази коду або навіть код реалізації об'єкта.


2

Маршаллер робить все, що потрібно, щоб передавати структуру даних, яку потрібно перенести з одного місця в інше. Коли я говорю про "Структуру даних", це може бути що завгодно. Від самого об'єкта (дані стану => значення поля) до посилання пам'яті на цей об'єкт, який буде оброблятися на стороні клієнта "Stub", а на стороні сервера - "Проксі". Це означає, що Маршаллер може використовувати "Серіалізатори", щоб перетворити цю структуру даних у представлення низького рівня, набагато простіше транспортувати. Шлях трансформації може мати інші компоненти, такі як компресори, компілятори, адаптери тощо. Для мене серіалізатор є частиною Marshaller.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.