Подтвердить что ты не робот

DataContract vs Message Contract

Хотя я прочитал некоторые статьи WCF о контракте с сообщениями, но я не могу понять, что является реальным использованием контракта с сообщением. Могу ли я использовать MessageContract вместо DataContract или в дополнение к DataContract?

4b9b3361

Ответ 1

A DataContract - это описание типа, которое отображается и поддерживается вашим сервисом. A MessageContract является абстракцией над сообщением SOAP, которое позволяет явно определять структуру базового сообщения.

Они призваны дополнять друг друга и служить различным целям.

Ответ 2

Марк Гравелл ответил на аналогичный вопрос WCF: MessageContract, DataContract... Confused?

Одним из преимуществ сообщений-контрактов является то, что вы можете установить конфиденциальность против членов, но во многих случаях это необязательно. В таком я предпочитаю, чтобы контракт был максимально простым, так же как данных контракта.

Ответ 3

Используя DataContract, служба может выставлять типы, которые она меняет. Но XML (SOAP), который заменен, не контролируется (хотя и воздействует) на него. Хотя MessageContract может использоваться для явного определения способа структурирования XML (SOAP-сообщения).

Ответ 4

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

Однако иногда полный контроль над структурой сообщения SOAP столь же важен, как и контроль над его содержимым. Это особенно актуально, когда важна интероперабельность или специально контролирует проблемы безопасности на уровне сообщения или части сообщения. В этих случаях вы можете создать контракт с сообщением, который позволяет вам указать структуру точного сообщения SOAP.

Для получения дополнительной информации: https://msdn.microsoft.com/en-us/library/ms730255(v=vs.110).aspx

Ответ 5

Одна из лучших в контракте на сообщение заключается в том, что он всегда поможет вам добавить дополнительную безопасность или написать оболочку для целей аутентификации, чтобы сделать аутентифицированный вызов сервисам (это может включать как WCF, так и WS), в то время как клиент делает вызов для обслуживания.

Контракт с сообщением также помогает диагностировать связь между клиентом и сервисом, вводя другой инспектор сообщений.