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


Настраиваемые модули форматирования сообщений

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

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

Настраиваемые модули форматирования сообщений на клиенте

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

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

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

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

Форматирование сообщений на службе

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

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

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

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

См. также