WCF, когда использовать MessageHeader вместо передачи переменной в аргументе функции - PullRequest
2 голосов
/ 26 июля 2011

Я читаю о MessageContract & MessageHeader и пытаюсь понять сценарий использования отправки некоторой информации в MessageHeader, а не использовать ее только в качестве параметров функции?

Ответы [ 2 ]

1 голос
/ 26 июля 2011

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

Другие возможные сценарии передачи некоторых параметров в заголовках сообщений:

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

MessageContract & MessageHeader обеспечивает более низкое управление вашими сообщениями, чем DataContract & DataMember.Также он обеспечивает способ создания заголовков SOAP, если вы используете webHttpBinding или basicHttpBinding.Если вы используете возможности потоковой передачи в своей службе WCF, то использование MessageHeader является единственным способом передачи данных, кроме самого потока.
Подробнее о контрактах сообщений можно прочитать в этой статье MSDN

...