共用方式為


實作分散式系統

在分散式系統中實作軟體的其中一種方法是使用原始網路支援。 此方法包括套接字、命名管道或 HTTP POST、GET 等等。 所有這些模型都會強制開發人員以某種方式使用低階程序設計基本類型,以某種方式強制開發人員處理網路數據表示法(NDR)、封裝數據、管理網路流量和失敗狀況、數據完整性保護和加密等等。

RPC 提供程式設計模型,讓開發人員透過豐富的 API,在用戶端與伺服器之間保留網路互動的細微控制,同時讓開發人員從分散式系統所引進的詳細數據和負擔中節省下來。

例如,請考慮與各種方法相關聯的負擔,以保護分散式系統中訊息交換的完整性和隱私權。 考慮封包交換的網路安全性時,某些保護較弱,有些較強。 沒有真正的網路安全性,只有各種封包式安全性機制:識別呼叫端的安全性(這通常很弱,因為封包內容通常會在傳輸中變更)、保護封包的完整性,而不保護其隱私權(各種簽章和哈希),以及保護訊息交換隱私權的安全性(各種加密機制)。

實作安全分散式系統的另一個負擔是實作安全性基本類型所需的演算法,例如加密、簽署、驗證等等。 開發人員可以實作這些演算法,但這樣做很困難、容易出錯,甚至有風險,因為產生的演算法通常有細微的安全性缺陷。 或者,開發人員可以使用可用的安全性提供者來實作分散式系統內網路互動的保護。

使用 RPC 時,這兩個負擔都很容易解決。 開發人員只需要告訴 RPC 要使用的安全性套件,以及應將哪些安全性保護套用至訊息交換(就驗證、加密、相互驗證、呼叫者身分識別追蹤等而言)。 RPC 會以有效率的方式處理幕後的所有詳細數據,但可讓開發人員完全掌控數據的受保護方式。