次の方法で共有


チャネルの登録

.NET リモート処理システムでは、クライアントが、リモート オブジェクトのメソッドを呼び出すと、チャネル オブジェクトがデータの転送を行います。リモート サービスは複数のチャネルをサポートできます。また、必要条件に最も合致するチャネルの選択は、クライアント アプリケーションが行う必要があります。クライアント構成ファイルでチャネルを指定せず、クライアントがリモート オブジェクトのメソッドを呼び出した場合は、.NET リモート処理システムによって、既定のチャネル実装 (HttpChannel または TcpChannel) のいずれかが読み込まれます (既定のチャネル実装のいずれかがクライアントのネットワーク プロトコルをサポートしている場合)。ただし、クライアントがコールバック機能またはイベントを必要としている場合は、コールバック機能を検出するクライアント チャネルを指定する必要があります。

チャネルの登録には 2 つの方法があります。チャネル テンプレートを宣言してアプリケーションでこのチャネルを参照するか、またはアプリケーションですべてのチャネル情報を直接指定します。Machine.config ファイルの既定のチャネル テンプレートは、ほとんどのアプリケーションに適用できます。このテンプレートは、<channel>ref 属性を使用し "tcp" または "http" のいずれかを指定することによって、<channels> タグ (<application> タグ内) から参照できます。HttpChannel を使用する場合は port 属性を指定する必要はありませんが、TcpChannel を使用する場合は port 属性を指定する必要があります。

アプリケーションがサーバー オブジェクトを公開する場合は、クライアント アプリケーションがオブジェクトと通信できるように、チャネルを登録する必要があります。これは、ChannelServices.RegisterChannel メソッドを使用してプログラムによって行うか、構成ファイルにチャネルを登録することによって行います。

アプリケーションがオブジェクトを利用する場合は、サービス オブジェクトが、マシン構成ファイルにリストされた既定のクライアント チャネルのいずれかを使用しない限り、オブジェクトにアクセスできるチャネルを登録する必要があります。コールバック機能またはイベントを待機する必要がある場合、これは必須です。

詳細な例については、「リモート処理の例 : チャネル シンク プロバイダ」、<channel> インスタンス要素のトピック、および <channel> テンプレート要素のトピックを参照してください。

チャネル シンク

チャネル シンクを使用すると、開発者はクライアントとリモート サービス間のメッセージのシリアル化と転送をカスタマイズできます。チャネル シンクはシンク プロバイダによって作成され、クライアント シンク プロバイダとサーバー シンク プロバイダの両方を構成ファイルに指定できます。サーバー チャネル シンクは、サーバーとの間でメッセージを送受信するときに呼び出され、<serverProviders> 要素内で指定します。クライアント シンクは、クライアントとの間でメッセージを送受信するときに呼び出され、<clientProviders> 要素内で指定します。

チャネルには、フォーマッタ シンクが必要です。フォーマッタ シンクは、メッセージをシリアル化します。.NET Framework は、バイナリおよび SOAP シリアル化のフォーマッタを備えています。構成ファイルでチャネル テンプレートを作成する方法を次の例に示します。

<configuration>
   <system.runtime.remoting>
      <application>
      </application>
      <channels>
         <channel 
            id="MyChannel"
            type="MyChannel,MyChannelAssembly"
         >
            <clientProviders> 
               <formatter ref="soap"> 
               </formatter>
               <provider 
                  type="Channels.AuthenticationSink,MyChannels"
               />
            </clientProviders>
         </channel>
      </channels>
   </system.runtime.remoting>
</configuration>

カスタム フォーマッタが指定されると、.NET リモート処理システムは、すべてのチャネルが適切な順序で指定されると見なします。このため、カスタム フォーマッタを使用するカスタム チャネルを宣言する場合は、チャネル シンク チェインに含むその他のプロバイダも指定する必要があります。既定のチャネル シンクは追加されません。

参照

構成ファイルを使用したリモート オブジェクトの登録 | RemotingConfiguration クラス | .NET リモート処理の概要 | .NET リモート処理の概要 | 構成 | リモート オブジェクトの設定