Страницы

Поиск по вопросам

четверг, 14 февраля 2019 г.

В чем разница между MessageContract и DataContract в WCF?

Когда используется одно, а когда другое? С виду эти контракты очень похожи


Ответ

В общих чертах:
Соглашения (Contracts) в WCF предоставляют совместимость, необходимую для взаимодействия с клиентом. DataContract и MessageContract являются структурными соглашениями (structural contracts), которые дополняют друг друга и служат разным целям.
DataContract - это соглашение между сторонами (сервисом и клиентом), которое описывает тип данных, которым они будут обмениваться, иными словами DataContract используется для определения структуры данных сообщения, т.е. DataContract определяет какие параметры и возвращаемые типы будут сериализованы/десериализованы Binary <==> XML для обмена между сторонами.
WCF использует SOAP-сообщения для общения. MessageContract используется для контроля структуры тела SOAP-сообщения (SOAP message body) и сериализации данных, а так же для передачи информации в заголовках SOAP-сообщений (SOAP header).
Таким образом, использование MessageContract предпочтительно только тогда, когда существует необходимость контролировать "макет" вашего сообщения (SOAP-сообщения). Например, добавить специфичные данные в Header SOAP-сообщения

Итого:
В 90% случаев, использования DataContract будет достаточно для достижения поставленных целей, но если же вам необходимо очень тщательно контролировать "макет" вашего SOAP-сообщения, то тут на помощь приходит MessageContract

Комментариев нет:

Отправить комментарий