在分布式系统中实现软件的一种方法是使用原始网络支持。 此方法包括套接字、命名管道或 HTTP POST、GET 等。 所有这些模型都强制开发人员以一种或另一种方式使用低级编程基元,从而强制开发人员处理网络数据表示形式(NDR)、打包数据、管理网络流量和故障条件、数据完整性保护和加密等。
RPC 提供了一种编程模型,开发人员通过丰富的 API 保留对客户端和服务器之间的网络交互的精细控制,同时从分布式系统引入的详细信息和负担中节省开发人员。
例如,考虑与各种方法来保护分布式系统中消息交换的完整性和隐私相关的负担。 在考虑数据包交换的网络安全性时,某些保护较弱,一些保护更强。 没有真正的网络安全,只有各种基于数据包的安全机制:标识调用方(这往往很弱,因为数据包内容在传输中经常可以更改),安全保护数据包的完整性,而无需保护其隐私(各种签名和哈希),以及保护消息交换(各种加密机制)的安全性。
实现安全分布式系统的另一个负担是实现安全基元(如加密、签名、身份验证等)所需的算法。 开发人员可以实现这些算法,但这样做非常困难、容易出错,甚至有风险,因为生成的算法通常存在细微的安全漏洞。 或者,开发人员可以使用可用的安全提供程序为分布式系统中的网络交互实现保护。
使用 RPC,这两个负担都很容易解决。 开发人员只需告知 RPC 要使用的安全包,以及应向消息交换应用哪些安全保护(在身份验证、加密、相互身份验证、调用方标识跟踪等方面)。 RPC 以高效的方式处理后台的所有详细信息,但可让开发人员完全控制数据的保护方式。