您的位置:首页 > 其它

WCF学习笔记(六)自定义绑定和C/S之间传输流的绑定

2011-09-25 23:22 399 查看
1.自定义绑定

<system.serviceModel>

<services>

<service name="WCFBinding.HelloWcf" behaviorConfiguration="">

<endpoint address="" binding="customBiding" contract="WCFBinding.IHelloWcfService"></endpoint>

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"></endpoint>

<host>

<baseAddresses>

<add baseAddress="http://www.yoyo.com"/>

</baseAddresses>

</host>

</service>

</services>

<bindings>

<customBinding>

<binding name="customBiding">

<transactionFlow transactionProtocol="WSAtomicTransactionOctober2004"/>

<!--

1.InActivityTimeout

文档中的说明是:获取或设置服务在关闭之前保持非活动状态的时间间隔。

说白了一点呢,就是如果服务停留多长时间没有工作,那我们就关闭他(嘿嘿,有点像公司对待员工一样,偶 尔休息一下子,不干活还行,时间长了,老板会炒你鱿鱼的哦!)

2.Ordered

文档中说明为:获取或设置一个值,该值指示消息传递是否必须保持与消息发送一致的顺序。

任何一方,无论是客户端发送请求消息(Request Message),还是服务端发送相应消息(Response Message)。发送出来的消息都有先后次序,而接收方在接收这些消息的时候,有时候会出现错位的现象,有的消息可能后发先至,而有的可能先发后至,这就影响了通讯双方正常的交互。产生这样现象的主要的原因有两点:

1)未使用可靠连接协议,使得在传输层中出现类似现象

2)虽然试用了可靠连接协议,但在发送端或者接收端的通道中(Channel)发送或者接收有顺序问题

tcp协议用于解决第一个问题,而ReliabelSession的Ordered正可以解决第二个问题

-->

<reliableSession ordered="true"/>

<binaryMessageEncoding />

<httpTransport />

</binding>

</customBinding>

</bindings>

<behaviors>

<serviceBehaviors>

<behavior name="servicebehavior">

<serviceMetadata httpGetEnabled="true"/>

</behavior>

</serviceBehaviors>

</behaviors>

</system.serviceModel>

2.服务器传输流道客户端

<services>

<service name="WCFBinding.HelloWcf" behaviorConfiguration="serviceBehavior">

<endpoint address="HelloWcf1" contract="MediaManagerService.IHelloWcf1" binding="basicHttpBinding" />

<endpoint address="HelloWcf2" contract="MediaManagerService.IHelloWcf2" binding="basicHttpBinding" bindingConfiguration="basicHttpStreaming"/>

<endpoint address="HelloWcf2" contract="MediaManagerService.IHelloWcf2" binding="netTcpBinding" bindingConfiguration="netTcpStreaming"/>

<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />

<host>

<baseAddresses>

<add baseAddress="http://localhost:8080"/>

<add baseAddress="net.tcp://localhost:8090"/>

</baseAddresses>

</host>

</service>

</services>

<bindings>

<netTcpBinding>

<binding name="netTcpStreaming" transferMode="StreamedRequest" maxReceivedMessageSize="500000" maxBufferSize="1024" sendTimeout="00:00:30" >

</binding>

</netTcpBinding>

<basicHttpBinding>

<binding name="basicHttpStreaming" messageEncoding="Mtom" maxReceivedMessageSize="500000" transferMode="Streamed">

</binding>

</basicHttpBinding>

</bindings>

<behaviors>

<serviceBehaviors>

<behavior name="serviceBehavior">

<serviceMetadata httpGetEnabled="true"/>

</behavior>

</serviceBehaviors>

</behaviors>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: