カスタム プロキシの技術サンプル
このトピックの対象は、既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジに特定されています。新規の開発には、このトピックを適用しないでください。分散アプリケーションは、現在は Windows Communication Foundation (WCF) を使用して開発する必要があります。
このサンプルでは、RealProxy クラスの拡張について示します。RealProxy を拡張することにより、任意のリモート オブジェクトとの間でやり取りされるメッセージに、ユーザー コードからアクセスできるようになります。このサンプルでは、3 つの実行可能ファイルを作成します。ProxyWithReturnMessage.exe アプリケーションでは、Invoke メソッドをオーバーライドし、メッセージ データを表示します。ProxyWithCustomCasting.exe アプリケーションでは、IFaq および IBaz という 2 つのインターフェイスを使用し、キャスト機能のカスタム化の例を示しています。ProxyWiredToHttpChannel.exe アプリケーションでは、Http チャネルを使用し、RemotingHello サービスの呼び出しを受け取り、転送する方法を示しています。
注 : |
---|
このサンプルを実行するには、使用しているコンピューターにインターネット インフォメーション サービス (IIS) がインストールされている必要があります。サンプル アプリケーションを実行する場合は、その前に、RemotingHello サービスを IIS に登録してください。 |
コマンド プロンプトを使用してサンプルをビルドするには
コマンド プロンプト ウィンドウを開き、CS サブディレクトリに移動します。
コマンド ラインで「msbuild CustomProxiesCS.sln」と入力します。
注 : このサンプルでは、3 つのコンソール アプリケーションをビルドします。出力を表示するには、コマンド プロンプトでこれらを起動し、実行する必要があります。
Visual Studio を使用してサンプルをビルドするには
Windows エクスプローラーを開き、CS サブディレクトリに移動します。
CustomProxiesCS.sln ファイルのアイコンをダブルクリックして、このファイルを Visual Studio で開きます。
[ビルド] メニューの [ソリューションのビルド] をクリックします。
サービスを IIS に登録するには
サービスを DLL にコンパイルし、その DLL をサービスの読み込み元となる bin ディレクトリにコピーします。上記に従って、コマンド プロンプトまたは Visual Studio でサンプルをビルドすると、サービスがコンパイルされ、ProxyWiredToHttpChannel ディレクトリに bin サブディレクトリが作成され、このディレクトリに Hello.dll がコピーされます。
インターネット サービス マネージャーを起動し、サーバー ノードの [既定の Web サイト] をクリックします。メニューの [アクション、新規作成、仮想ディレクトリ] をクリックし、[次へ] をクリックして次に進みます。
エイリアスとして「RemotingHello」と入力し、[次へ] をクリックします。
サービスのあるディレクトリを入力します。手順 1 で DLL がコピーされた bin ディレクトリまでの完全パスを入力します。ただし、bin ディレクトリはパスに含めません。
[次へ] をクリックします。表示された既定の設定を受け入れ、もう一度 [次へ] をクリックします。[完了] をクリックします。これでサービスが登録され、[インターネット サービス マネージャー] ウィンドウの [既定の Web サイト] の一覧に表示されます。
サービスを登録したディレクトリに web.config ファイルがあることを確認します。このファイルは、サービスについて記述するファイルです。ポート 80 の HTTP チャネルを使い、ブラウザーまたはクライアントをとおしてクライアントからサービスにアクセスしようとすると、このファイルが自動的に読み込まれます。
サンプルを実行するには
次の 3 つの実行可能ファイルのうち、いずれかのファイルが格納されているディレクトリに移動します。
ProxyWiredToHttpChannel.exe
ProxyWithCustomCasting.exe
ProxyWithReturnMessage.exe
各実行可能ファイルは、そのコンソール アプリケーションと同じ名前のディレクトリの下の \bin\Debug サブディレクトリに格納されています。
コマンド ラインで、実行可能ファイルの名前を入力します。ProxyWiredToHttpChannel.exe を実行する場合は、その前に、RemotingHello サービスを前述のように IIS に登録してください。
参照
リファレンス
IChannel
IMessage
IRemotingTypeInfo
MarshalByRefObject
OneWayAttribute
RealProxy
System.Collections
System.Runtime.Remoting
System.Runtime.Remoting.Proxies
System.Runtime.Remoting.Messaging
UnmanagedType
概念
その他のリソース
高度なリモート処理
オブジェクトのアクティベーションと有効期間
ビルド日:2010-02-13