Когда используется одно, а когда другое? С виду эти контракты очень похожи
Ответ
В общих чертах:
Соглашения (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
Комментариев нет:
Отправить комментарий