Всегда ли WCF использует SOAP для отправки информации по вашей привязке? - PullRequest
8 голосов
/ 04 мая 2010

Я понимаю, что вы можете выбирать из целого ряда привязок, таких как TCP, HTTP, HTTPS и т. Д.

Правильно ли я считаю, что для отправки данных через это соединение всегда используется SOAP? Я смотрю руководство по WCF, и оно говорит о том, как исключения сериализуются в SOAP и отправляются клиенту. Я бы подумал, что не все привязки будут использовать SOAP для отправки данных, поэтому я немного озадачен тем, как это работает.

Хотя я понимаю основы WCF, как настроить службы и использовать прокси-сервер на клиенте, похоже, он не объяснил, как именно упакованы данные для отправки.

Возможно, ответ очевиден: он просто использует XML / SOAP, но я бы хотел знать наверняка!

1 Ответ

22 голосов
/ 04 мая 2010

Нет, не все. WebHttpBinding разработан для протоколов REST (HTTP GET, POX, JSON и т. Д.)

Технически, WCF является просто общим протоколом обмена сообщениями и может использовать любой вид кодирования вообще. по умолчанию и наиболее распространенными кодировками являются basicHttpBinding и wsHttpBinding, которые основаны на SOAP / XML.

Затем у вас есть netTcpBinding, который использует двоичную кодировку сообщений, netMsmqBinding, который использует протокол Microsoft Message Queue (MSMQ) и так далее. В WCF нет жестко заданного формата сообщений.

SOAP имеет собственную спецификацию для сериализации исключений (сбоев AKA), поэтому поведение всегда более или менее одинаково при использовании привязки на основе SOAP; когда вы используете другие привязки, поведение сбоя может значительно отличаться, в некоторых случаях фактически глотать исключения, если вы не переопределите поведение по умолчанию (это то, что происходит в webHttpBinding).

...