Share via


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

チャネル シンク チェインに挿入されるチャネル シンクのチャネル シンク プロバイダを指定します。

<configuration>
   <system.runtime.remoting>
      <channels>
         <channel>
            <serverProviders>
               <provider/>

ここで指定されたプロバイダは、対象のチャネルの既定のサーバー プロバイダをオーバーライドして、そのチャネル テンプレートの新しい既定のプロバイダになります。

<configuration>
   <system.runtime.remoting>
      <channels>
         <channel>
            <clientProviders>
               <provider/>

ここで指定されたプロバイダは、対象のチャネルの既定のクライアント プロバイダをオーバーライドして、そのチャネル テンプレートの新しい既定のプロバイダになります。

<configuration>
   <system.runtime.remoting>
      <application>
         <channels>
            <channel>
               <serverProviders>
                  <provider/>

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

<configuration>
   <system.runtime.remoting>
      <application>
         <channels>
            <channel>
               <clientProviders>
                  <provider/>

ここで指定されたクライアント プロバイダは、対象のチャネル インスタンスの既定のプロバイダをオーバーライドします。

<provider
   ref="ProviderTemplateReference"   type="ProviderType, ProviderAssembly"   customChannelSinkProperty="customProperty"/>

省略可能属性

属性 説明
customChannelSinkProperty サポートされているカスタム チャネル シンク プロパティを示します。カスタム チャネル シンク プロバイダとそのシンクがサポートする、プロバイダ プロパティおよびチャネル シンク プロパティをいくつでも指定できます。カスタム チャネル シンク プロパティは、属性と値のペアで指定します。次に例を示します。
<provider id="CustomChannelSinkProvider" type="Namespace.CustomChannelSinkProvider, CustomChannels" customChannelSinkProperty="ChannelSinkPropertyValue"/>

customChannelSinkProperty 属性とその値は、プロバイダのコンストラクタで IDictionary 引数として使用できます。

ここには、カスタム シンク プロバイダのデータも指定できます。サポートされるノードのレベルは 1 つだけです。次に例を示します。

<provider ref="custom">
   <extra data="value"/>
   <extra data="AnotherValue"/>
</provider>

この追加情報は、プロバイダのコンストラクタで SinkProviderDataICollection として使用できます。

必須属性

属性 説明
type チャネル シンク プロバイダの完全型名と、プロバイダの実装が含まれているアセンブリの名前を指定します。格納しているアセンブリがグローバル アセンブリ キャッシュ内にある場合は、バージョン、カルチャ、および公開キーの情報がすべて含まれます。この属性は、ref 属性を指定しない場合にだけ指定する必要があります。
ref クライアントが使用するために登録するチャネル シンクのチャネル シンク プロバイダ テンプレートの ID を指定します。ref 属性を指定する場合は、type 属性を指定する必要はありません。

解説

別のプロバイダ テンプレートを参照するには、そのテンプレートの id 値を対象のインスタンスの ref 属性として指定します。プロバイダを指定すると、そのプロバイダによって既定のプロバイダがすべてオーバーライドされます。チャネル シンクの呼び出しチェインの途中でほかのプロバイダを呼び出すには、それらのプロバイダもここで指定する必要があります。

<provider> 要素のインスタンスは、4 つの場所で指定できます。<serverProviders> 要素または <clientProviders> 要素内の <channel> テンプレート要素の下で指定した場合、この要素に指定されたプロバイダは、対象となる特定のチャネルがアプリケーション インスタンスによって参照されたときに、そのチャネルの既定のシンク プロバイダになります。<application> 要素の下で指定した場合、テンプレート内で対象チャネルの既定のシンクとして構成された可能性のある既定のシンクがすべて、この要素によってオーバーライドされます。ここで指定されたプロバイダによって、テンプレート内で指定されている既定のプロバイダがオーバーライドされるため、他にも呼び出しチェインに挿入する必要があるプロバイダがある場合は、それらもすべてこの要素に指定しておく必要があります。

次の構成ファイルは、<provider> インスタンス要素を使用して、<provider> テンプレート要素で宣言されている "propsetter" および "null" チャネル シンク プロバイダを HttpChannel に割り当てています。また、"propsetter" チャネル シンク プロバイダは、<provider> インスタンス要素の属性として、および子 <endpoint> 属性の名前と値の組み合わせとして指定されたカスタム プロバイダ プロパティを使用して作成されています。

<configuration>
   <system.runtime.remoting>
      <application>
         <client>
            <wellknown 
               type="RemoteType, RemoteAssembly"
               url="http://computername:8080/RemoteType.rem"/>
         </client>
         <channels>
            <channel ref="http">
               <clientProviders>
                  <formatter ref="soap"/>
                  <provider 
                     ref="propsetter" 
                     username="bob" 
                     writeToConsole="true"
                  >
                     <endpoint url="contoso.com:9000" password="xyz" />
                     <endpoint url="contoso.com:9001" password="123" />
                  </provider>
                  <provider ref="null" writeToConsole="true" />
               </clientProviders>
            </channel>
         </channels>
      </application>
      <channelSinkProviders>
         <clientProviders>
            <provider 
               id="propsetter" 
               type="ChannelSinkPropertySetterProvider, SinkAssembly" 
            />
            <provider 
               id="null" 
               type="NullSinkProvider, SinkAssembly" 
            />
         </clientProviders>
      </channelSinkProviders>
      <debug loadTypes="true" />
   </system.runtime.remoting>
</configuration>

必要条件

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

参照

リモート処理設定スキーマ | シンクとシンク チェイン