Share via


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

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

クライアントまたはサーバーのチャネル シンク チェーンに挿入されるフォーマッタ シンクのチャネル シンク プロバイダーを指定します。階層内で、この要素を含めることができる位置は 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" someProperty="xyz" />
                     <endpoint url="contoso.com:9001" someProperty="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

ビルド日:2010-02-13