Я понимаю, что можно выбрать из диапазона привязки, такой как TCP, HTTP, HTTPS и т.д.
Я корректен в размышлении, что это всегда использует SOAP для отправки данных по этому соединению? Я смотрю руководство по WCF, и он говорит о том, как исключения сериализируются в SOAP и отправляются клиенту. Я думал бы, что не вся привязка будет использовать SOAP для отправки данных, таким образом, я буду немного смущен тем, как это работает.
Хотя я понимаю основные принципы WCF, как настроить сервисы и использовать прокси на клиенте, это, кажется, не объяснило точно, как данные упаковываются для отправки.
Возможно, ответ очевиден, что он просто использует XML / SOAP, но я хотел бы знать наверняка!
Нет, не все. WebHttpBinding разработан на основе протоколов REST (HTTP GET, POX, JSON и т. Д.)
Технически WCF является просто общим протоколом обмена сообщениями и может использовать любой тип кодирования. По умолчанию и наиболее распространенными кодировками являются basicHttpBinding
и wsHttpBinding
, которые основаны на SOAP / XML.
Затем у вас есть netTcpBinding
, который использует двоичную кодировку сообщений, netMsmqBinding
, который использует протокол Microsoft Message Queue (MSMQ), и так далее. На самом деле нет жесткого формата для сообщений в WCF.
SOAP имеет собственную спецификацию для сериализации исключений (ошибок AKA), поэтому поведение всегда более или менее одинаково, когда вы используете привязку на основе SOAP; когда вы используете другие привязки, поведение при сбое может значительно отличаться, в некоторых случаях фактически проглатывая исключения, если вы не переопределите поведение по умолчанию (это то, что происходит в webHttpBinding
).