... и демаршализацию / десериализацию? Объяснение из Википедии не оставляет меня равнодушным! Я программист на Java, если терминология используется по-разному в разных языках.
... и демаршализацию / десериализацию? Объяснение из Википедии не оставляет меня равнодушным! Я программист на Java, если терминология используется по-разному в разных языках.
Семантика здесь важна:
Маршаллинг подразумевает перемещение данных, но не преобразование данных из их собственного представления или хранилища. Объекты Java можно маршалировать по проводам в их родном представлении.
Сериализация подразумевает преобразование данных в некоренное промежуточное представление. Например: преобразование Java-объекта в JSON или XML.
Конечно, большинство систем, которые маршалируют данные, перед их транспортировкой сериализуют их в какой-то не родной формат.
Этот вопрос был задан ранее, но на StackOverflow. Вот ссылка.
Цитата ответа Джеффри Хантина :
Маршалинг и сериализация слабо синонимичны в контексте удаленного вызова процедуры, но семантически различаются с точки зрения намерения.
В частности, маршалинг - это получение параметров отсюда туда, а сериализация - копирование структурированных данных в примитивную форму или из нее, такой как поток байтов. В этом смысле сериализация является одним из способов выполнения маршалинга, обычно реализуя семантику передачи по значению.
Также возможно, что объект будет маршалироваться по ссылке, и в этом случае данные «на проводе» являются просто информацией о местоположении для исходного объекта. Тем не менее, такой объект все еще может быть поддается сериализации.
Как упоминает @Bill, могут быть дополнительные метаданные, такие как расположение базы кода или даже код реализации объекта.
Маршаллер делает все, что ему нужно, чтобы создать структуру данных для переноса из одного места в другое. Когда я говорю о «структуре данных», это может быть что угодно. От самого объекта (state data => значения поля) до ссылки в памяти на этот объект, который будет обрабатываться на стороне клиента «заглушкой», а на стороне сервера - «прокси». Это означает, что Marshaller мог бы использовать «Сериализаторы», чтобы преобразовать эту структуру данных в представление низкого уровня, которое намного легче транспортировать. Путь преобразования может иметь другие компоненты, такие как Компрессоры, Компиляторы, Адаптеры и т. Д. Для меня Сериализатор является частью Marshaller.