Маршалинг


Маршалинг (от англ. marshal — упорядочивать) в информатике — процесс преобразования информации (данных, двоичного представления объекта), хранящейся в оперативной памяти, в формат, пригодный для хранения или передачи. Процесс похож на сериализацию (отличия см. ниже). Обычно применяется тогда, когда информацию (данные, объекты) необходимо передавать между различными частями одной программы или от одной программы к другой.

В стандартной библиотеке языка Python термин «маршалинг» схож по значению с термином «сериализация»[1], но термины не являются синонимами в документе RFC 2713 («Schema for Representing Java(tm) Objects in an LDAP Directory»; октябрь 1999 года), на который опирается стандарт языка Java:

«Маршализовать» объект означает записать его состояние и кодовую(ые) базу(ы) [2] (URI, указывающий на расположение кода класса объекта для загрузки) таким образом, чтобы при обратной операции получалась копия оригинала, предположительно с помощью автоматической загрузки определения класса объекта. Вы можете маршализовать любой объект, который является сериализуемым или удалённым (…). Маршалинг подобен сериализации, за исключением того, что при маршалинге указывается расположение исполняемого кода. Маршалинг отличается от сериализации тем, что он особым образом применяется к удалённым объектам, для которых не создается копия самого объекта, а лишь указывается удалённый адрес, по которому должна производиться работа с ним.

«Сериализировать» объект означает превращать его состояние в поток байтов таким образом, чтобы указанный поток мог быть преобразован обратно в копию исходного объекта.