(二)WCF的Binding模型
上篇博客对WCF中的基础知识进行了介绍,先从概念上知道了WCF的一些理论,在abc模型中B是Binding,WCF为我们提供了多种绑定机制,我们先从了解各种绑定机制开始,只有知道之后才能在实践中更好的利用。
【采用Binding原因】
由于服务之间的通信方式多种多样,就有多种可能的通信模式。包括:同步的请求/应答消息,或者异步的“即发即弃”消息;双向消息等。传递消息的传输协议包括:HTTP、TCP、P2P、IPC以及MSMQ。消息编码格式包括:纯文本编码格式、二进制编码格式、MTOM编码格式。消息安全保障也有多种策略,包括:不实施任何安全策略,只提供传输层的安全策略、消息层的隐私保护和安全策略。WCF还提供了多种对客户端认证与授权的安全策略。
正是由于通信模式和交互方式之间组合数量之大,而且彼此之间可能会排斥或存在约束,管理起来非常复杂。为了简化这些选项,使他们易于管理,WCF引入了Binding技术将这些通信特征组合在一起。这样既方便了用户的使用,同时也使得WCF得到了推广,真是两全其美。
【绑定的内容】
Binding主要解决的问题是怎样实现。一个绑定总封装了传输协议、消息编码、通信模式、可靠性、安全
性、事务传播以及互操作性等相关选项的集合,是的他们保持一致,让我们不做很多事情,只需轻松使用。
【绑定方式】
每种绑定方式使用的传输协议与编码格式都不相同,下面是各个绑定方式与协议的对应关系,我们先
了解,然后再在我们的项目中找到我们用了那种绑定方式。
【项目中应用】
<bindings> <!--<wsHttpBinding> --> <!--启动事务流--> </wsHttpBinding>--> <wsHttpBinding> <!--启动事务流--> <binding name="WsHttpBinding_Default" transactionFlow="true" closeTimeout="00:10:00" receiveTimeout="00:20:00" sendTimeout="00:20:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" useDefaultWebProxy="false"> <!--<readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/>--> <security mode="None"> <transport clientCredentialType="None" proxyCredentialType="None" realm="" /> <message clientCredentialType="UserName" algorithmSuite="Default" /> </security> </binding> </wsHttpBinding> </bindings>
【总结】
WCF绑定方式很多,我这里先从理论了解,从代码中看到了关于绑定的应用,任重而道远,还需要在接下
来的实践中去不断地去完善知识的储备。