次の方法で共有


非同期 RPC

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

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

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

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