次の方法で共有


<clientProviders> 要素 (インスタンス)

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

対象のチャネル テンプレートが構成ファイル内の別の場所から参照された場合に、そのチャネル テンプレートに対するクライアント側の既定のチャネル シンク呼び出しチェーンに挿入されるチャネル シンクのプロバイダーを指定します。下のいずれかの位置でプロバイダーを指定すると、対象のチャネルの既定のチャネル シンクがオーバーライドされます。テンプレートのチャネル シンク呼び出しチェーンに、これらの既定のチャネル シンクも挿入する必要がある場合は、それらの既定のチャネル シンクも同様にこの要素で指定する必要があります。

<configuration>

<system.runtime.remoting>

<channels>

<channel>

<clientProviders>

このレベルで指定されたプロバイダーは、対象のチャネル テンプレートが参照されるたびに、そのチャネルの既定のプロバイダーをオーバーライドします。

<configuration>

<system.runtime.remoting>

<application>

<channels>

<channel>

<clientProviders>

このレベルで指定されたプロバイダーは、対象のチャネル インスタンスに限り、その既定のプロバイダーをオーバーライドします。

<clientProviders> 
      <formatter/> 
      <provider/> 
</clientProviders>

子要素

要素 説明

<formatter>

チャネル シンク呼び出しチェーンに挿入されるフォーマッタ シンクを指定します。<clientProviders> インスタンス要素内に 1 回だけ指定できます。

<provider>

チャネル シンクの呼び出しチェインに挿入されるチャネル シンクを指定します。<clientProviders> インスタンス要素内に 1 回以上指定できます。

解説

上に示したレベルで参照または宣言されたプロバイダーは、チャネル テンプレート要素内で使用された場合は、対象のチャネルが構成ファイルの別の場所で参照されたときに、そのチャネルの既定のプロバイダーをオーバーライドして、自身が既定のプロバイダーになります。この要素が指定された場合は、対象となるチャネルのすべての既定のプロバイダーまたはフォーマッタがオーバーライドされます。カスタム プロバイダーの他に、これらの既定のプロバイダーやフォーマッタもチャネル テンプレートの一部に含める場合は、それらも含めて、そのチャネルが別の場所から参照されたときに使用するすべてのプロバイダーおよびフォーマッタを指定しておく必要があります。

チャネル インスタンス内で使用する場合は、上で示したレベルで参照または宣言されたプロバイダーが、該当するチャネル インスタンスに限り、そのチャネルの既定のプロバイダーをオーバーライドします。このインスタンスが、clientProviders を宣言するテンプレートを参照した場合は、宣言されているプロバイダーも、ここで指定されたプロバイダーによって完全にオーバーライドされます。

次の構成ファイルは、<channels> テンプレート要素を使用して、id が "httpbinary" の HttpChannel を宣言し、<clientProviders> テンプレート要素を使用して、リモート呼び出しをシリアル化する BinaryClientFormatterSink を指定しています。次に、<application> 要素内の <channel> インスタンス要素に ref="httpbinary" と指定することにより、クライアント アプリケーションがこの特定のチャネル構成を使用することを要求しています。最後に、<clientProviders> インスタンス要素を使用して "propsetter" チャネル シンク プロバイダーを追加し、このチャネル シンク プロバイダーによって使用されるカスタム構成要素をいくつか渡します。type 属性を使用してグローバル アセンブリ キャッシュにあるアセンブリ内の型を指定するには、バージョン、カルチャ、および公開キーの情報を含む完全な型情報が必要です。次の例の type 属性では、簡略にするためにこの情報が省略されています。

<configuration>
   <system.runtime.remoting>
      <channelSinkProviders>
         <clientProviders>
            <provider 
               id="propsetter" 
               type="ChannelSinkPropertySetterProvider, PropsSink" 
            />
         </clientProviders>
      <channels>
         <channel 
            type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" 
            id="httpbinary"
         >
            <clientProviders>
               <formatter                   type="System.Runtime.Remoting.Channels.BinaryClientFormatterSinkProvider, System.Runtime.Remoting"
               />
            </clientProviders>
         </channel>
      </channels>
      <application>
         <channels>
            <channel ref="httpbinary">
               <clientProviders>
                  <provider 
                     ref="propsetter" 
                     username="somename" 
                     writeToConsole="true"
                  >
                     <endpoint url="contoso.com:9000" someProp="xyz" />
                     <endpoint url="contoso.com:9001" someProp="123" />
                  </provider>
               </clientProviders>
            </channel>
         </channels>
         <client>
            <wellknown 
               url="http://computername:80/RemoteType.rem"                type="RemoteType, RemoteAssembly"
            />
         </client>
      </application>
   </system.runtime.remoting>
</configuration>

必要条件

構成ファイル : アプリケーション構成ファイル、マシン構成ファイル (Machine.config)

参照

リファレンス

リモート処理設定スキーマ

概念

シンクとシンク チェーン

ビルド日:2010-02-13