Это не вопрос «или-или». У вас всегда будут контракты с данными, если вы имеете дело с составными данными (больше, чем просто базовые типы int, string и т. Д.). Это данность.
Вам понадобятся только контракты с сообщениями, если вам необходимо очень точно и точно контролировать расположение ваших сообщений SOAP. В большинстве случаев, более 90% времени - вы этого не делаете.
Контракт с сообщением позволяет конкретно указать, какие элементы (скалярные типы или составные типы как DataContracts) будут находиться в заголовке SOAP и который будет находиться в теле SOAP.
Возможно, вам понадобится это, если у вас есть партнер по обмену информацией, который требует особого формата, и вы должны настроить свои сообщения SOAP так, чтобы они соответствовали данному данному расположению. Это примерно единственный допустимый сценарий, когда вам понадобятся и должны использовать контракты с сообщениями.
Итак, чтобы сделать короткую короткую историю: всегда использовать договоры на использование данных, практически никогда не использовать договоры с сообщением (если вам абсолютно не нужно).
Marc