Маршалинг

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

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

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

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

Маршалинг задействуется при использовании различных механизмов RPC, где есть необходимость в передаче данных между процессами и потоками. Переход от неуправляемого типа в тип CLR, как, например, в процессах P/Invoke, используемых в платформе .NET Framework, является подходящим примером, демонстрирующим применение маршалинга.

Кроме того, маршалинг широко используется в скриптах и приложениях, применяющих технологии XPCOM, поставляемой в составе Mozilla application framework. Браузер Mozilla Firefox — одно из самых известных приложений, созданных с применением этой платформы, что позволило скриптовым языкам использовать технологию XPCOM через Cross-Platform Connect (XPConnect).

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

В стандартной библиотеке языка Python термин «маршалинг» схож по значению с термином «сериализация»[1], но термины не являются синонимами в документе RFC 2713, на который опирается стандарт Java:

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

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

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

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

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

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

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