Маршалинг

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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

Противоположный процесс называется демаршалингом (сходен с десериализацией).

Применение[править | править вики-текст]

Маршалинг применяется при передаче данных между процессами и/или потоками, например:

  • при использовании различных механизмов RPC;
  • при использовании P/Invoke на платформе .NET Framework (при переходе от неуправляемого типа в тип CLR);
  • в скриптах и приложениях, применяющих технологию XPCOM, поставляемую в составе Mozilla application framework (MFA). Браузер Mozilla Firefox — одно из самых известных приложений, созданных с применением MFA. Применение MFA позволило скриптовым языкам использовать технологию XPCOM через Cross-Platform Connect (XPConnect).

Сравнение с сериализацией[править | править вики-текст]

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

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

RFC 2713

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

RFC 2713

Сетевые протоколы[править | править вики-текст]

Применительно к компьютерным сетям маршалинг означает процесс преобразования данных в формат, в котором данные могут быть переданы по сети и могут пройти через сетевые ограничители. Данные преобразуются в поток байт, упаковываются, делятся на части, передаются по сети средствами сетевого протокола. Принятые данные преобразуются обратно в исходый формат.

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]

См. также[править | править вики-текст]