次の方法で共有


非同期 RPC

非同期リモート プロシージャ コール (RPC) は、Open Software Foundation-Distributed Computing Environment (OSF-DCE) で定義されている従来の RPC モデルのいくつかの制限に対処する Microsoft 拡張機能です。 非同期 RPC では、リモート プロシージャ 呼び出しが戻り値から分離され、従来の同期 RPC の次の制限が解決されます。

  • シングル スレッド クライアントからの複数の未処理の呼び出し。 従来の RPC モデルでは、クライアントは、呼び出しが戻るまでリモート プロシージャ 呼び出しでブロックされます。 これにより、クライアントが複数の未処理の呼び出しを行うのを防ぐことができますが、他の処理を行うためにスレッドを引き続き使用できます。
  • クライアントが遅い、または遅延している。 データの生成に時間がかかるクライアントでは、初期データを使用してリモート プロシージャ コールを行い、生成時に追加のデータを提供することができます。 これは、従来の (同期) RPC では不可能です。
  • 低速サーバーまたは遅延サーバー。 完了に長い時間がかかるリモート プロシージャ コールは、タスクの実行中にディスパッチ スレッドを関連付けます。 非同期 RPC を使用すると、サーバーは別の (非同期) 操作を開始して要求を処理し、応答が使用可能になったら返信することができます。 サーバーは、リモート呼び出し中にディスパッチ スレッドを関連付けることなく、結果が使用可能になったときに応答を増分的に送信することもできます。 クライアント アプリケーションを非同期にすることで、低速のサーバーがクライアント アプリケーションを不必要に並べ上げるのを防ぐことができます。
  • 大量のデータの転送。 クライアントとサーバーの間で大量のデータを転送する場合 (特に低速リンクを介して)、転送中はクライアント スレッドとサーバー マネージャー スレッドの両方が結び付けられます。 非同期 RPC とパイプを使用すると、クライアントまたはサーバーが他のタスクを実行するのをブロックすることなく、データ転送を段階的に実行できます。

非同期 RPC メカニズムを利用するには、[async] 属性を使用して関数を宣言します。 この宣言は属性構成ファイル (ACF) で行うため、インターフェイス定義言語 (IDL) ファイルを変更する必要はありません。非同期 RPC は、ワイヤ プロトコル (クライアントとサーバーの間でのデータの送信方法) には影響しません。 つまり、同期クライアントと非同期クライアントの両方が非同期サーバー アプリケーションと通信できます。

このセクションでは、非同期 RPC を使用して分散アプリケーションを開発する方法の概要について説明します。 概要については、次のセクションで説明します。