Microsoft RPC 支持两种编码和解码方法,统称为 序列化数据。 序列化意味着数据被封送到你控制的缓冲区中,并从中解封数据。 这不同于 RPC 的传统用法,其中存根和 RPC 运行时库完全控制封送缓冲区,并且进程是透明的。 可以将缓冲区用于永久媒体、加密等存储。 对数据进行编码时,RPC 存根会将数据封送到缓冲区并将缓冲区传递给你。 解码数据时,会提供一个封送缓冲区,其中包含数据,并将数据从缓冲区解封到内存。 可以按过程或类型进行序列化。
注意
开发人员通常使用术语 选取 来描述序列化。 事实上,Windows SDK 示例包含一个名为 pickle 的目录,用于保留 RPC 序列化示例程序。
序列化利用 RPC 机制进行封送和取消封送数据以用于其他目的。 例如,应用程序可以将不同类型的多个对象序列化为缓冲区,然后在单个作中写入整个缓冲区,而不是使用多个 I/O作将一组对象序列化为流,从而优化性能。 作序列化句柄的函数与所使用的序列化类型无关。
例如,如果需要使用 RPC 以外的网络传输机制,例如Microsoft Windows 套接字(Winsock)。 使用 RPC 序列化,程序可以调用将数据封送到缓冲区中的函数,然后使用 Winsock 传输此数据。 当应用程序收到数据时,它可以使用 RPC 序列化机制从 Winsock 例程填充的缓冲区中解封数据。 这提供了 RPC 样式应用程序的许多优势,同时,它使你能够使用非 RPC 传输机制。
还可以将序列化用于与网络通信无关的用途。 例如,使用 RPC 编码函数将数据封送到缓冲区后,即可将其存储在文件中供其他应用程序使用。 还可以对其进行加密。 甚至可以使用它来存储数据库中与硬件和作系统无关的数据表示形式。
以下主题介绍了MICROSOFT RPC 支持的序列化服务: