Поделиться через


Пользовательские модули форматирования сообщений

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

Можно использовать пользовательский модуль форматирования сообщений, если требуется реализовать специализированное преобразование между сообщениями и объектами, которое не удается выполнить при помощи контракта данных. Это можно сделать путем изменения или расширения поведения выполнения определенной операции контракта на стороне клиента или службы.

Пользовательские модули форматирования сообщения на стороне клиента

Интерфейс IClientMessageFormatter определяет методы, используемые для управления преобразованием сообщений в объекты и обратно для клиентских приложений.

Необходимо реализовать данный интерфейс. Сначала требуется переопределить метод DeserializeReply для десериализации сообщения. Данный метод вызывается после получения входящего сообщения, но перед его отправкой операции клиента.

Затем переопределите метод SerializeRequest для сериализации объекта. Данный метод вызывается перед отправкой исходящего сообщения.

Чтобы вставить пользовательский модуль форматирования в службу, назначьте объект IClientMessageFormatter свойству Formatter с помощью поведения операции. Сведения о поведении см. в разделе "Настройка и расширение среды выполнения с помощью поведения".

Пользовательские модули форматирования сообщения на стороне службы

Интерфейс IDispatchMessageFormatter определяет методы, которые преобразовывают объект Message в параметры для операции и из параметров в объект Message в приложении службы.

Необходимо реализовать данный интерфейс. Сначала требуется переопределить метод DeserializeReply для десериализации сообщения. Данный метод вызывается после получения входящего сообщения, но перед его отправкой операции клиента.

Затем переопределите метод SerializeRequest для сериализации объекта. Данный метод вызывается перед отправкой исходящего сообщения.

Чтобы вставить пользовательский модуль форматирования в службу, назначьте объект IDispatchMessageFormatter свойству Formatter с помощью поведения операции. Сведения о поведении см. в разделе "Настройка и расширение среды выполнения с помощью поведения".

См. также