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>