非同步 RPC

非同步遠端程序呼叫 (RPC) 是一種 Microsoft 擴充功能,可解決 Open Software Foundation-Distributed Computing Environment (OSF-DCE) 所定義之傳統 RPC 模型的數個限制。 非同步 RPC 會分隔遠端程序呼叫與其傳回值,以解析傳統同步 RPC 的下列限制:

  • 來自單一執行緒用戶端的多個未處理呼叫。 在傳統的 RPC 模型中,用戶端會在遠端程序呼叫中遭到封鎖,直到呼叫傳回為止。 這可防止用戶端有多個未完成的呼叫,同時仍可讓其執行緒執行其他工作。
  • 緩慢或延遲的用戶端。 產生資料速度緩慢的用戶端可能會想要使用初始資料進行遠端程序呼叫,然後在產生資料時提供其他資料。 這不適用於傳統 (同步) RPC。
  • 慢速或延遲的伺服器。 需要很長的時間才能完成的遠端程序呼叫,會將工作持續時間的分派執行緒系結在一起。 使用非同步 RPC,伺服器可以啟動個別的 (非同步) 作業,以處理要求,並在有可用的回復時傳回回複。 當結果變成可用時,伺服器也可以累加傳送回復,而不需要在遠端呼叫期間將分派執行緒系結。 藉由讓用戶端應用程式非同步,您可以防止伺服器不必要地系結用戶端應用程式。
  • 傳輸大量資料。 在用戶端與伺服器之間傳輸大量資料,特別是透過緩慢的連結,在傳輸期間將用戶端執行緒和伺服器管理員執行緒系結在一起。 使用非同步 RPC 和管道時,資料傳輸可以累加進行,而不會封鎖用戶端或伺服器執行其他工作。

您可以使用 [async] 屬性宣告函式,以利用非同步 RPC 機制。 因為您在 ACF) 的屬性組態檔 (進行這個宣告,所以不需要對介面定義語言 (IDL) 檔案進行任何變更;非同步 RPC 不會影響連線通訊協定, (用戶端與伺服器) 之間傳輸資料的方式。 這表示同步和非同步用戶端都可以與非同步伺服器應用程式通訊。

本節概述如何使用非同步 RPC 開發分散式應用程式。 概觀會顯示在下列各節中: