序列化服务

Microsoft RPC 支持两种编码和解码数据的方法,统称为 序列化数据。 序列化意味着数据会封送到你控制的缓冲区,并从中取消封送。 这不同于传统的 RPC 用法,其中存根和 RPC 运行时库完全控制封送缓冲区,并且过程是透明的。 可以使用缓冲区在永久介质上存储、加密等。 对数据进行编码时,RPC 存根会将数据封送到缓冲区,并将缓冲区传递给你。 解码数据时,会提供一个封送缓冲区,其中包含数据,并且数据将从缓冲区取消封送到内存。 可以基于过程或类型进行序列化。

注意

术语 pickling 在开发人员中通常用于描述序列化。 事实上,Windows SDK 示例包含一个名为 pickle 的目录,该目录保留 RPC 序列化示例程序。

 

序列化利用 RPC 机制将数据封送和取消封送用于其他目的。 例如,应用程序可以通过将多个不同类型的对象序列化到缓冲区中,然后在单个操作中写入整个缓冲区来优化性能,而不是使用多个 I/O 操作将一组对象序列化到流中。 操作序列化句柄的函数与所使用的序列化类型无关。

例如,如果需要使用 RPC 之外的网络传输机制,例如 Microsoft Windows 套接字 (Winsock) 。 通过 RPC 序列化,程序可以调用将数据封送到缓冲区中的函数,然后使用 Winsock 传输此数据。 应用程序收到数据时,可以使用 RPC 序列化机制从 Winsock 例程填充的缓冲区中解封数据。 这提供了 RPC 样式应用程序的许多优点,同时,它使你能够使用非 RPC 传输机制。

还可以将序列化用于与网络通信无关的目的。 例如,使用 RPC 编码函数将数据封送到缓冲区后,即可将其存储在文件中供其他应用程序使用。 还可以对其进行加密。 甚至可以使用它在数据库中存储与硬件和操作系统无关的数据表示形式。

以下主题介绍 Microsoft RPC 支持的序列化服务: