Elemento <formatter> (modello)

Contiene il provider di sink di canale per un sink del formattatore da inserire nella catena di sink di canale client o server. È possibile includere tale elemento in base a due ordini gerarchici.

<configuration>

<system.runtime.remoting>

<channelSinkProviders>

<clientProviders>

<formatter>

Un provider del formattatore specificato in questo ambito diventa un modello utilizzabile dalle istanze <formatter>.

<configuration>

<system.runtime.remoting>

<channelSinkProviders>

<serverProviders>

<formatter>

Un provider del formattatore specificato in questo ambito diventa inoltre un modello utilizzabile dalle istanze <formatter>.

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

Attributi facoltativi

Attributo Descrizione

customFormatterProperty

Indica una proprietà personalizzata di sink di canale supportata. È possibile specificare un numero qualsiasi di proprietà di sink di provider e di canale in grado di essere supportate da provider di sink di canale personalizzati e dai propri sink. Una proprietà personalizzata di sink di canale verrà specificata con una coppia attributo/valore. Nell’esempio

<provider id="CustomChannelSinkProvider" type="Namespace.CustomChannelSinkProvider, CustomChannels" customChannelSinkProperty="ChannelSinkPropertyValue"/>

l'attributo customChannelSinkProperty e il relativo valore saranno disponibili come argomento IDictionary nel costruttore del provider.

È anche possibile specificare in questo ambito i dati personalizzati del provider di sink. È supportato un solo livello di nodi. Nell’esempio

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

le informazioni aggiuntive saranno disponibili come ICollection di SinkProviderData nel costruttore del provider.

includeVersions

Indica che un formattatore di invio include informazioni complete sulla versione dell'assembly e sul tipo durante la serializzazione delle informazioni relative al tipo. Per informazioni dettagliate, vedere la sezione Osservazioni riportata di seguito. Il valore predefinito per entrambi i formattatori forniti dal sistema è true.

strictBinding

Indica che un formattatore ricevente tenterà in primo luogo di identificare il tipo utilizzando le eventuali informazioni complete sulla versione; altrimenti, utilizzerà solo il nome del tipo e il nome dell'assembly, senza le informazioni sulla versione. Per informazioni dettagliate, vedere la sezione Osservazioni riportata di seguito. Il valore predefinito per entrambi i formattatori forniti dal sistema è false.

typeFilterLevel

Valore String che specifica il livello di deserializzazione automatica tentato dal formattatore nella catena dei sink del canale server. Valori supportati sono Low (valore predefinito) e Full. Per informazioni dettagliate sui livelli di deserializzazione, vedere Deserializzazione automatica in .NET Remoting.

Questa proprietà è supportata solo in .NET Framework versione 1.1 con le seguenti piattaforme: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family.

Attributi obbligatori

Attributo Descrizione

id

Specifica una stringa che identifica il provider di sink del formattatore. Questa stringa può essere utilizzata nell'attributo ref di altri utenti per eseguire un'associazione al provider di sink del formattatore in questione.

type

Specifica il nome completo di tipo del provider di sink del formattatore e il nome dell'assembly contenente l'implementazione del provider. Se l'assembly che contiene il tipo si trova nella Global Assembly Cache, vengono specificate anche le informazioni relative alla versione, alla lingua e alla chiave pubblica.

Note

È possibile che un elemento di istanza <formatter> faccia riferimento a un formattatore qui specificato qui o in un altro punto di questo file di configurazione o di un altro file caricato dalla stessa applicazione.

Nella tabella seguente viene descritta l'interazione tra gli attributi includeVersions e strictBinding, qualora vengano utilizzati contemporaneamente.

includeVersions (formattatore di invio) strictBinding (formattatore ricevente) Modalità di caricamento del tipo

true

true

Viene caricato il tipo esatto oppure viene generata un'eccezione TypeLoadException.

false

true

Il tipo viene caricato utilizzando solo il nome del tipo e il nome dell'assembly; altrimenti viene generata un'eccezione TypeLoadException.

true

false

Se esistente, viene caricato il tipo esatto; altrimenti, il tipo viene caricato utilizzando solo il nome del tipo e il nome dell'assembly. Se il caricamento ha esito negativo, viene generata un'eccezione TypeLoadException.

false

false

Il tipo viene caricato utilizzando solo il nome del tipo e il nome dell'assembly; altrimenti, viene generata un'eccezione TypeLoadException.

Esempio

Poiché nel file di configurazione seguente vengono utilizzate le istanze <clientProviders>, è necessario specificare tutti i formattatori e i provider che si desidera vengano utilizzati dal canale. In questo caso, l'elemento <formatter> fa riferimento al sink SoapClientFormatterSink e utilizza un elemento di istanza <provider> per assegnare al canale HttpChannel i provider di sink di canale "propsetter" e "null" che sono stati dichiarati con elementi del modello <provider>. Inoltre, il provider di sink di canale "propsetter" viene creato con le proprietà personalizzate del provider specificate come attributi nell'elemento di istanza del provider e come coppie nome/valore dell'attributo figlio <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>

Requisiti

File di configurazione: file di configurazione dell'applicazione, file di configurazione del computer (Machine.config)

Vedere anche

Riferimenti

Schema delle impostazioni remote
BinaryClientFormatterSink
SoapClientFormatterSink
BinaryServerFormatterSink
SoapServerFormatterSink