Показать сообщение отдельно
Старый 11.06.2012, 00:59   #12
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Сериализация vs Маршалинг

Сперва, просто читаем (до конца и спокойно):

http://www.gunsmoker.ru/2011/09/blog-post_9471.html :
Почти синонимом термина "сериализация" является маршалинг (от англ. marshal — упорядочивать). Обратный процесс - демаршалинг (аналог десериализации). Маршалинг - более общее понятие, чем сериализация. Всякая сериализация является частным случаем маршалинга. Отличие маршалинга от сериализации в том, что сериализация предполагает упаковку лишь данных программы. Скажем, матрицы чисел, записи о сотруднике в картотеке или таблицы высот игрового уровня. Когда говорят про маршалинг, подразумевают сериализацию не только данных программы, но и её программного состояния, мета-информации. К примеру, сериализация объекта с полями запишет лишь данные объекта (поля). Маршалинг же объекта запишет не только информацию о его данных (полях), но и информацию по восстановлению структуры объекта - класс объекта, либо же его мета-информацию для реконструирования типа.

Маршалируя и демаршалируя объект вы создаёте его полную копию. При этом принимающая сторона может ничего не знать про объект.
http://www.gotdotnet.ru/forums/2/28864/143256/ :
чтобы отмаршилить, в частности,
ссылочный тип по значению его надо сериализовать. То есть для того,
чтобы поддержать протокол вызова, нужно перевести его параметры к
описанному инвариантному виду, то есть например в двоичный поток или
xml-документ. После того, как все данные подготовлены, их можно собирать
в пакет (например, SOAP), что и делает наш ненаглядный маршалинг в своем
общем виде.
Итого, маршалинг — тот большой дядька, который контролирует и
определяет, как будут передаваться данные. Сериализация — это метод,
которым пользуется маршалинг для осуществления своего темного дела.
http://www.intuit.ru/department/se/msfdev/2/2.html :
Весь описанный процесс называется маршализацией удаленного объекта по ссылке ( marshal by reference ). В отличие от маршализации по значению, экземпляр объекта находится в процессе сервера и не покидает его, а для доступа к объекту клиенты используют посредников. При маршализации же по значению само значение объекта сериализуется в набор байт для его передачи между процессами, после чего следует создание его копии в другом процессе.
http://www.webopedia.com/TERM/S/serialization.html :
The conversion of an object instance to a data stream of byte values in order to prepare it for transmission.
http://www.webopedia.com/TERM/D/data_marshalling.html :
The process of gathering data and transforming it into a standard format before it is transmitted over a network so that the data can transcend network boundaries. In order for an object to be moved around a network, it must be converted into a data stream that corresponds with the packet structure of the network transfer protocol. This conversion is known as data marshalling. Data pieces are collected in a message buffer before they are marshaled. When the data is transmitted, the receiving computer converts the marshaled data back into an object.

Data marshalling is required when passing the output parameters of a program written in one language as input to a program written in another language.
Если попытаться всё это переварить и осмыслить, то получить можно нечто подобное:

0) В зависимости от технологии (языка) и уровня абстракции (детализации) описания происходящего, значения терминов несколько размазываются вплоть до их полного слияния. (Так, например можно, с некоторыми оговорками, ввести в описание программы на Blitz3D термин "указатель", полностью приравняв его тем самым к понятию "ссылка")
1) Сериализация - процесс преобразования объекта в последовательность байт.
2) Маршалинг - процесс преобразования объектов (в их актуальных состояниях) для передачи между процессами.
3) В зависимсоти от типа маршалинга, понятие "объект" в пункте 1 меняется:
маршалинг по значению - объект=данные
маршалинг по ссылке - объект="данные с описанием как и куда их пристроить"

Из этого можно сделать вывод, что маршалинг эксплуатирует сериализацию в том или ином виде, исходя из задачи. Задача решаемая при помощи маршалинга заключается в том или ином способе обмена объектами между процессами. Сама сериализация не определяет: находятся ли в выходной последовательности только данные или дополнительная информация о структуре объекта - любой метод преобразования объекта в серию байт называется сериализацией.

upd: Если посмотреть ещё абстрактней, то процесс сохранения в файл - тоже маршалинг: только разные процессы - это одна и та же программа запущенная в разные моменты времени. Тем не менее, сериализация может быть использована и без маршалинга - например, для сравнения двух объектов внутри одного процесса. Кроме того, наличие термина, позволяет структурно выделить процедуру из общей сложной схемы взаимодействия.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (11.06.2012)