Книга: 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.

Все эти классы приемника и провайдера способны расширяться и заменяться собственными реализациями.

Оглавление книги


Генерация: 2.377. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз