据我所知,您可以从一系列绑定中进行选择,例如TCP,HTTP,HTTPS等。
我认为它总是使用SOAP通过此连接发送数据吗?我正在观看WCF指南,它正在讨论如何将异常序列化为SOAP并发送到客户端。我原以为并非所有的绑定都会使用SOAP来发送数据,所以我对它的工作原理有点困惑。
虽然我了解WCF的基本原理,如何在客户端上设置服务和使用代理,但它似乎没有准确解释数据如何打包发送。
也许答案很明显,它只是使用XML / SOAP,但我很想知道!
答案 0 :(得分:22)
不,不是全部。 WebHttpBinding是围绕REST协议(HTTP GET,POX,JSON等)
设计的从技术上讲,WCF只是一种通用的消息传递协议,可以使用任何类型的编码。 默认和最常见的编码是basicHttpBinding
和wsHttpBinding
,它们都基于SOAP / XML。
然后你有netTcpBinding
,它使用二进制消息编码netMsmqBinding
,它使用Microsoft消息队列(MSMQ)协议,依此类推。 WCF中的消息实际上没有硬编码格式。
SOAP有自己的序列化异常规范(AKA故障),因此当您使用基于SOAP的绑定时,行为总是或多或少相同;当你使用其他绑定时,错误行为可能会有很大不同,在某些情况下实际上会吞下异常,除非你覆盖默认行为(这就是webHttpBinding
中发生的情况)。