Элемент <formatter> (шаблон)

Этот раздел относится к технологии прежних версий, которая сохраняется для обеспечения обратной совместимости с существующими приложениями и не рекомендуется для разработки новых приложений. Сейчас распределенные приложения следует создавать с помощью  Windows Communication Foundation (WCF).

Содержит поставщик приемника канала для приемника модуля форматирования, который вставляется в цепочку приемников канала клиента или сервера. Имеется два варианта иерархии для включения этого элемента.

<конфигурация>

<system.runtime.remoting>

<channelSinkProviders>

<clientProviders>

<formatter>

Заданный здесь поставщик модуля форматирования становится шаблоном для использования экземплярами <formatter>.

<конфигурация>

<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 в конструкторе поставщика.

Здесь также можно задать данные поставщика пользовательских приемников. Поддерживается только один уровень узлов. В данном примере:

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

Дополнительные сведения доступны в виде ICollection объекта SinkProviderData в конструкторе поставщика.

includeVersions

Указывает, что отправляющий модуль форматирования при сериализации сведений о типе включает полные сведения о типе и версии сборки. Важные сведения см. ниже в разделе "Заметки". Для обоих предоставляемых системой модулей форматирования значение по умолчанию — true.

strictBinding

Указывает, что принимающий модуль форматирования сначала попробует определить тип при помощи полных сведений о версии, если они имеются, а лишь затем будет использовать только имя типа и имя сборки без сведений о версии. Важные сведения см. ниже в разделе "Заметки". Для обоих предоставляемых системой модулей форматирования значение по умолчанию — false.

typeFilterLevel

Строковое значение, задающее уровень автоматической десериализации, которую пытается выполнить модуль форматирования в серверной цепочке приемников канала. Поддерживаемые значения: Low (по умолчанию) и Full. Дополнительные сведения об уровнях десериализации см. в разделе Автоматическая десериализация при удаленном взаимодействии .NET.

Это свойство поддерживается только в .NET Framework версии 1.1 на следующих платформах: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional и в семействе Windows Server 2003.

Обязательные атрибуты

Атрибут Описание

id

Задает строку, идентифицирующую поставщик приемника данного модуля форматирования. Для привязки к поставщику приемника данного модуля форматирования также можно использовать строку в атрибуте ref.

type

Задает полное имя типа поставщика приемника модуля форматирования и имя сборки, содержащей реализацию поставщика. Включает сведения о версии, языке и региональных параметрах, а также об открытом ключе, если соответствующая сборка принадлежит к глобальному кэшу сборок.

Замечания

Ссылка на задаваемый здесь модуль форматирования может содержаться в элементе экземпляра <formatter> в любом месте этого или другого файла конфигурации, загружаемого этим же приложением.

В следующей таблице приводится описание взаимосвязи между атрибутами includeVersions и strictBinding, если они указываются вместе.

includeVersions (отправляющий модуль форматирования) strictBinding (принимающий модуль форматирования) Загрузка типа

true

true

Загружается точный тип или создается исключение TypeLoadException.

false

true

Тип загружается с использованием только имени типа и имени сборки или создается исключение TypeLoadException.

true

false

Загружается точный тип, если он имеется; в противном случае тип загружается с использованием только имени типа и имени сборки. Если загрузить тип не удается, создается исключение TypeLoadException.

false

false

Тип загружается с использованием только имени типа и имени сборки или создается исключение TypeLoadException.

Примеры

Поскольку в приведенном ниже файле конфигурации используются экземпляры <clientProviders>, необходимо задать все модули форматирования и поставщики, которые должны использоваться каналом. В данном случае элемент <formatter> содержит ссылку на объект SoapClientFormatterSink и использует элемент экземпляра <provider>, чтобы назначить объекту HttpChannel поставщик приемников каналов propsetter и null, которые в свою очередь были объявлены в элементах шаблона <provider>. Кроме того, поставщик приемников каналов «propsetter» создается с использованием свойств настраиваемого поставщика, заданных в качестве атрибутов в элементе экземпляра поставщика и в качестве пар «имя-значение» дочернего атрибута <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