Книга: C# для профессионалов. Том II
Форматтеры
Форматтеры
.NET Framework предоставляет два класса форматтера:
? System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
.
? System.Runtime.Serialization.Formatters.Soap.SoapFormatter
.
Форматтер ассоциируется с каналом из-за наличия объектов приемников форматтера и провайдеров источников форматтера.
Оба эти класса форматтера реализуют интерфейс System.Runtime.Remoting.Messaging.IRemotingFormatter
, который определяет методы Serialize()
и Deserialize()
для передачи и приема данных из канала.
Форматтер является подключаемым. При создании класса собственного форматтера экземпляр должен ассоциироваться с используемым каналом. Это делается с помощью приемника форматтера и провайдера приемника форматтера. Как было показано ранее, провайдер источника форматтера, например SoapServerFormatterSinkProvider
, может передаваться как аргумент при создании канала. Провайдер источника форматтера реализует для сервера интерфейс IServerChannelSinkProvider
, а для клиента IClientChannelSinkProvider
. Оба эти интерфейса определяют метод CreateSink()
, возвращающий источник форматтера, — SoapServerFormatterSinkProvider
даст экземпляр класса SoapServerFormatterSink
. На клиентской стороне имеется класс SoapClientFormatterSink
, который использует в методах SyncProcessMessage()
и AsyncProcessMessage()
класс SoapFormatter
для сериализации сообщения. SoapServerFormatterSink
десериализует сообщение снова с помощью SoapFormatter
.
Все эти классы приемника и провайдера способны расширяться и заменяться собственными реализациями.
- Каналы
- Форматтеры
- ChannelServices и RemotingContiguration
- Активизация объектов
- Приемники сообщений
- Передача объектов в удаленные методы
- Управление временем жизни
- Конфигурационные файлы
- Приложения хостинга
- Классы, интерфейсы и SOAPSuds
- Отслеживание служб
- Асинхронная удаленная работа
- Удаленное выполнение и события
- Контексты вызова