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