<formatter> 要素 (テンプレート)

クライアントまたはサーバーのチャネル シンク チェインに挿入されるフォーマッタ シンクのチャネル シンク プロバイダを指定します。階層内で、この要素を含めることができる位置は 2 つあります。

<configuration>
   <system.runtime.remoting>
      <channelSinkProviders>
         <clientProviders>   
            <formatter>

ここで指定されたフォーマッタ プロバイダは、<formatter> インスタンスによって使用されるテンプレートになります。

<configuration>
   <system.runtime.remoting>
      <channelSinkProviders>
         <serverProviders>
            <formatter>

ここで指定されたフォーマッタ プロバイダも、<formatter> インスタンスによって使用されるテンプレートになります。

<formatter 
   id="FormatterID"   type="FormatterSinkProviderType, FormatterAssembly"   customFormatterProperty="customProperty"   includeVersions="true"   strictBinding="false"...typeFilterLevel="Low | Full"/>

省略可能属性

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

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

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

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

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

includeVersions 型情報をシリアル化するときに、送信側のフォーマッタに完全な型情報とアセンブリ バージョン情報が含まれることを示します。重要な詳細については、下記の解説を参照してください。システムによって提供される 2 つのフォーマッタの既定値は true です。
strictBinding 完全なバージョン情報がある場合には、受信側のフォーマッタがバージョン情報を含まない型名とアセンブリ名だけを使用して型を識別する前に、完全なバージョン情報を使用して型を識別しようとすることを示します。重要な詳細については、下記の解説を参照してください。システムによって提供される 2 つのフォーマッタの既定値は false です。
typeFilterLevel サーバー チャネル シンク チェインのフォーマッタが試みる自動逆シリアル化のレベルを指定する文字列値です。サポートされる値は Low (既定) および Full です。逆シリアル化のレベルの詳細については、「 .NET リモート処理での自動逆シリアル化」を参照してください。

このプロパティは、Windows 98、Windows NT 4.0、Windows Millennium Edition、Windows 2000、Windows XP Home Edition、Windows XP Professional、Windows Server 2003 ファミリの各プラットフォームの .NET Framework Version 1.1 だけでサポートされています。

必須属性

属性 説明
id 対象のフォーマッタ シンク プロバイダを識別する文字列を指定します。他のプロバイダは、それぞれの ref 属性でこの文字列を指定することによって、このフォーマッタ シンク プロバイダにバインドできます。
type フォーマッタ シンク プロバイダの完全型名と、プロバイダの実装が含まれているアセンブリの名前を指定します。格納しているアセンブリがグローバル アセンブリ キャッシュ内にある場合は、バージョン、カルチャ、および公開キーの情報が含まれます。

解説

ここで指定したフォーマッタは、同じ構成ファイルまたは同じアプリケーションによって読み込まれる別の構成ファイルの <formatter> インスタンス要素で参照できます。

includeVersions 属性と strictBinding 属性を両方とも指定した場合に、2 つの属性の間で発生する動作を次の表に示します。

includeVersions (送信側のフォーマッタ) strictBinding (受信側のフォーマッタ) 型の読み込み方法
true true 厳密一致する型が読み込まれるか、TypeLoadException がスローされます。
false true 型名とアセンブリ名だけを使用して型が読み込まれるか、TypeLoadException がスローされます。
true false 厳密一致する型がある場合は、その型が読み込まれます。厳密一致する型がない場合は、型名とアセンブリ名だけを使用して型が読み込まれます。上記の動作が失敗した場合は、TypeLoadException がスローされます。
false false 型名とアセンブリ名だけを使用して型が読み込まれるか、TypeLoadException がスローされます。

次の構成ファイルでは <clientProviders> インスタンスが使用されているため、チャネルが使用するすべてのフォーマッタとプロバイダを指定しておく必要があります。この例では、<formatter> 要素が SoapClientFormatterSink を参照し、<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)

参照

リモート処理設定スキーマ | BinaryClientFormatterSink クラス | SoapClientFormatterSink クラス | BinaryServerFormatterSink クラス | SoapServerFormatterSink クラス