Службы сериализации
Microsoft RPC поддерживает два метода кодирования и декодирования данных, которые совместно называются сериализации данных. Сериализация означает, что данные маршалируются в буферы, которыми вы управляете, и не маршалируются. Это отличается от традиционного использования RPC, в котором заглушки и библиотека времени выполнения RPC имеют полный контроль над буферами маршалинга и процесс прозрачным. Буфер можно использовать для хранения на постоянном носителе, шифровании и т. д. При кодировании данных заглушки RPC маршалируют данные в буфер и передают буфер. При декодировании данных вы предоставляете буфер маршалинга с данными в нем, а данные не маршали из буфера в память. Можно сериализовать по процедуре или типу.
Заметка
Термин выбора часто используется среди разработчиков для описания сериализации. На самом деле примеры пакета SDK для Windows содержат каталог с именем pickle, который сохраняет примеры программ сериализации RPC.
Сериализация использует механизмы RPC для маршалинга и отмены обработки данных в других целях. Например, вместо нескольких операций ввода-вывода для сериализации группы объектов в поток приложение может оптимизировать производительность путем сериализации нескольких объектов разных типов в буфер, а затем записи всего буфера в одной операции. Функции, которые управляют дескрипторами сериализации, не зависят от типа сериализации, которую вы используете.
В качестве другого примера, если необходимо использовать механизм сетевого транспорта помимо RPC, например Microsoft Windows Sockets (Winsock). При сериализации RPC программа может выполнять вызовы функций, которые маршалирует данные в буферы, а затем передает эти данные с помощью Winsock. Когда приложение получает данные, он может использовать механизм сериализации RPC для отмены обмена данными из буферов, заполненных подпрограммами Winsock. Это обеспечивает множество преимуществ приложений в стиле RPC и одновременно позволяет использовать механизмы транспорта, отличные от RPC.
Сериализация также можно использовать для целей, не связанных с сетевыми коммуникациями. Например, после использования функций кодирования RPC для маршалирования данных в буфер его можно хранить в файле для использования другим приложением. Вы также можете зашифровать его. Вы даже можете использовать его для хранения аппаратного и операционного системы независимого представления данных в базе данных.
В следующих разделах представлено обсуждение служб сериализации, поддерживаемых Microsoft RPC: