非同期リモート処理

このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。分散アプリケーションは、現在は Windows Communication Foundation (WCF) を使用して開発する必要があります。

リモート処理シナリオでの非同期プログラミングは、.NET リモート処理自体の構成と要件が異なる以外は、単一のアプリケーション ドメインやコンテキストでの非同期プログラミングと同じです。.NET リモート処理と、同期デリゲートおよび非同期デリゲートを使用した例については、「リモート処理の例 : 非同期リモート処理」を参照してください。

単一のアプリケーション ドメインでの非同期プログラミングと同様に、.NET リモート処理シナリオでの非同期プログラミングには次の項目が該当します。

  • 特定のリモート呼び出しが非同期かどうかは、呼び出し元が判断します。

  • リモート型は、クライアントによる非同期動作を明示的にサポートする必要はありません。

  • ランタイムは完全なタイプ セーフを強制します。

  • メソッドを待機または同期するには、System.Threading オブジェクトを適切に使用する必要があります。

ただし、アプリケーション ドメインやコンテキストの境界を越えて呼び出しを行うアプリケーションの場合、.NET リモート処理を使用するには、サーバーからのリモート呼び出しを受け取れるようにクライアント アプリケーションを構成する必要があります (これを行うにはクライアント チャネルでポート "0" を指定します)。この要件の理由は、非同期呼び出しが行われると、サーバーにクライアントへのコールバックを許可せずにその呼び出しの結果を取得する方法がないからです。

クライアントでは、MarshalByRefObject を拡張したり、リモート型自体を構成する必要はありませんが、それ以外は、サーバーとなるリモート型と同様の規則に従う必要があります。

  • コールバック メソッドは、インスタンス メソッドである必要があります。静的メソッドの呼び出しはリモート処理されません。

  • チャネルを、コールバック関数をリッスンするように登録する必要があります。

参照

処理手順

方法 : リモート オブジェクトのメソッドを非同期で呼び出す

概念

リモート オブジェクトのメソッドを非同期で呼び出す場合の問題
リモート処理の例 : 非同期リモート処理
リモート アプリケーションの構成

その他のリソース

.NET Framework リモート処理の概要