前言
再不写一篇就太监了,哈哈。
第21集 WCF里面的Binding Bindings in WCF
其实不太了解为什么第21集才讲这个Binding,下面都是一些概念性的东西,不过作为一个入门视频,了解一下也无妨吧。
Binding其实属于WCF中endpoint三个属性之一。他们分别是address,binding,contract合称ABC。来看一下下面这个service 节点。
<services>
<service name="CalculatorService.CalculatorService">
<endpoint address="" binding="wsHttpBinding" contract="CalculatorService.ICalculatorService">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/" />
</baseAddresses>
</host>
</service>
address的值是空值,因为这个其实是一个相对地址,一个服务的地址由下面的baseAddress+address 共同构成。
binding的值是wsHttpBinding,后续会详细讲。
contract的值是CalculatorService.ICalculatorService,这个给客户端用的合约,由命名空间+接口名字两部分构成。
构建一个简单的HelloService服务,然后分别用basicHttpBinding和netTcpBinding,配置文件分别是
<endpoint address="" binding="basicHttpBinding" contract="HelloService.IHelloService"></endpoint>
和
<endpoint address="" binding="netTcpBinding" contract="HelloService.IHelloService"></endpoint>
两个endpoint在更新了服务端引用后,都能达到想要的结果。现在有两个问题,
1. Binding是什么。
WCF里面的Binding定义了客户端与服务端交流的方式。他会影响到以下三个方面。
a. 传输协议(比如http,或者tcp,NamedPipe,MSMQ)
b. 信息的编码方式(比如普通的text/xml或者二进制数据)
c. 其他的一些协议约定(比如是否要使用可靠的消息传输,是否支持事务)
2. 如何选择Binding。
framework自带了一些Binding,具体看这里。
stackoverflow上有个推荐的回答还不错,可以参考他来选择合适的Binding。点这里。
这集稍微介绍了一下WCF里面的Binding,最后两个链接还是很管用的。 按照工作中实际的使用情况,用的比较多的是wsHttpBinding。
Thank you!