netTcpBinding

http://msdn.microsoft.com/zh-cn/library/ms731343.aspx

指定一种适合于跨计算机通信的安全、可靠且进行了优化的绑定。 默认情况下,它会生成一个运行时通信堆栈,该堆栈包含 Windows Security 以保证消息安全性和进行身份验证,包含 TCP 以便进行消息传递,并且包含二进制消息编码机制。

<netTcpBinding>
   <binding 
      closeTimeout="TimeSpan"
      hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
      listenBacklog="Integer"
      maxBufferPoolSize="integer"
      maxBufferSize="Integer"
      maxConnections="Integer" 
      maxReceivedMessageSize="Integer"
      name="string"
      openTimeout="TimeSpan"
      portSharingEnabled="Boolean"
      receiveTimeout="TimeSpan"
      sendTimeout="TimeSpan"
      transactionFlow="Boolean" 
      transactionProtocol="OleTransactions/WSAtomicTransactionOctober2004" 
            transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse"

      <reliableSession ordered="Boolean"
            inactivityTimeout="TimeSpan"
            enabled="Boolean" />
      <security mode="None/Transport/Message/Both">
            <message clientCredentialType="None/Windows/UserName/Certificate/CardSpace"
                defaultProtectionLevel="None/Sign/EncryptAndSign" 
algorithmSuite="Basic128/Basic192/Basic256/Basic128Rsa15/Basic256Rsa15/TripleDes/TripleDesRsa15/Basic128Sha256/Basic192Sha256/TripleDesSha256/Basic128Sha256Rsa15/Basic192Sha256Rsa15/Basic256Sha256Rsa15/TripleDesSha256Rsa15" />
            <transport clientCredentialType="None/Windows/Certificate"
                protectionLevel="None/Sign/EncryptAndSign" />
      </security>
       <readerQuotas             maxArrayLength="Integer"            maxBytesPerRead="Integer"            maxDepth="Integer"             maxNameTableCharCount="Integer"                     maxStringContentLength="Integer" />   </binding>
</netTcpBinding>

以下几节描述了属性、子元素和父元素。

特性

特性

说明

closeTimeout

一个 TimeSpan 值,指定为完成关闭操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。

hostnameComparisonMode

指定用于分析 URI 的 HTTP 主机名比较模式。 此属性的类型为 HostnameComparisonMode,指示在对 URI 进行匹配时,是否使用主机名来访问服务。 默认值为 StrongWildcard,表示在匹配过程中忽略主机名。

listenBacklog

一个正整数,指定侦听器上等待接受的最大通道数。 超出此限制的连接会被排队,直到连接数低于限制值。 connectionTimeout 属性限制客户端在引发连接异常之前将等待连接的时间。 默认值为 10。

maxBufferPoolSize

一个整数,指定此绑定的最大缓冲池大小。 默认值为 512 * 1024 字节。 Windows Communication Foundation (WCF) 的许多部件使用缓冲区。 每次使用缓冲区时,创建和销毁它们都将占用大量资源,而缓冲区的垃圾回收过程也是如此。 利用缓冲池,可以从缓冲池中获得缓冲区,使用缓冲区,然后在完成工作后将其返回给缓冲池。 这样就避免了创建和销毁缓冲区的系统开销。

maxBufferSize

一个正整数,指定内存中用于存储消息的缓冲区的最大大小(字节)。

如果 transferMode 属性等于 Buffered,则此属性应等于 maxReceivedMessageSize 属性值。

如果 transferMode 属性等于 Streamed,则此属性不能大于 maxReceivedMessageSize 属性值,应当至少为标头的大小。

默认值为 65536。 有关更多信息,请参见 MaxBufferSize

maxConnections

一个整数,指定服务将创建/接受的最大出站和入站连接数。 传入和传出连接分别根据此属性指定的限制进行计数。

超出此限制的入站连接需要排队,直到连接数低于限制值。

超出此限制的出站连接需要排队,直到连接数低于限制值。

默认值为 10。

maxReceivedMessageSize

一个正整数,指定采用此绑定配置的通道上可以接收的最大消息大小(字节),包括消息头。 如果消息超出此限制,则发送方将收到 SOAP 错误。 接收方将删除该消息,并在跟踪日志中创建事件项。 默认值为 65536。

name

一个包含绑定的配置名称的字符串。 因为此值用作绑定的标识,所以它应该是唯一的。 从 .NET Framework 4 开始,不要求绑定和行为具有名称。 有关默认配置以及无名称绑定和行为的更多信息,请参见简化配置和 WCF 服务的简化配置

openTimeout

一个 TimeSpan 值,指定为完成打开操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。

portSharingEnabled

一个布尔值,指定是否为此连接启用 TCP 端口共享。 如果此值为 false,则每个绑定都使用自己的独占端口。 此设置只与服务相关,因为客户端不受影响。

receiveTimeout

一个 TimeSpan 值,指定为完成接收操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:10:00。

sendTimeout

一个 TimeSpan 值,指定为完成发送操作提供的时间间隔。 此值应大于或等于 Zero。 默认值为 00:01:00。

transactionFlow

一个布尔值,指定绑定是否支持流动 WS-Transactions。 默认值为 false

transactionProtocol

指定与此绑定一起使用的事务处理协议。 有效值为

  • OleTransactions

  • WSAtomicTransactionOctober2004

默认值为 OleTransactions。 此属性的类型为 TransactionProtocol

transferMode

一个 TransferMode 值,指定为请求或响应对消息进行缓冲处理还是流式处理。

子元素

元素

说明

<netTcpBinding> 的 <security>

定义绑定的安全设置。 此元素的类型为 NetTcpSecurityElement

<readerQuotas>

定义可由采用此绑定配置的终结点进行处理的 SOAP 消息的复杂性约束。 此元素的类型为 XmlDictionaryReaderQuotasElement

reliableSession

指定是否在通道终结点之间建立可靠会话。

父元素

元素

说明

<bindings>

此元素包含标准绑定和自定义绑定的集合。

默认情况下,此绑定会生成一个运行时通信堆栈,该堆栈使用传输安全、用于消息传递的 TCP 和二进制消息编码机制。 此绑定是 Windows Communication Foundation (WCF) 系统提供的一个对应选项,用于通过 Intranet 进行通信。

netTcpBinding 的默认配置比 wsHttpBinding 提供的配置更快,但是只适用于 WCF 到 WCF 的通信。 可以使用可选的 securityMode 属性配置安全行为。 使用可选的reliableSessionEnabled 属性可以配置 WS-ReliableMessaging 的用法。 但是在默认情况下可靠消息传递为关闭状态。 一般来说,HTTP 系统提供的绑定(如wsHttpBinding 和 basicHttpBinding)是默认配置为打开事项,而 netTcpBinding 绑定是默认配置为关闭事项,因此,您必须选择性加入所需事项才能获取支持,例如获取对一种 WS-* 规范的支持。 这意味着在终结点之间交换消息时,TCP 的默认配置比 HTTP 绑定的默认配置更快。

绑定是在客户端和服务的配置文件中指定的。 绑定类型是在 <endpoint> 元素的 binding 属性中指定的。 如果要配置 netTcpBinding 绑定并更改它的一些设置,则必须定义绑定配置。 终结点必须使用 bindingConfiguration 特性来引用绑定配置。 在下面的示例中,定义了一个绑定配置。

<services>
  <service name="Microsoft.ServiceModel.Samples.CalculatorService"
           behaviorConfiguration="CalculatorServiceBehavior">
    ...
    <endpoint address=""
              binding="netTcpBinding"
              contract="Microsoft.ServiceModel.Samples.ICalculator" />
    ...
  </service>
</services>

<bindings>
  <netTcpBinding>
    <binding 
             closeTimeout="00:01:00"
             openTimeout="00:01:00" 
             receiveTimeout="00:10:00" 
             sendTimeout="00:01:00"
             transactionFlow="false" 
             transferMode="Buffered" 
             transactionProtocol="OleTransactions"
             hostNameComparisonMode="StrongWildcard" 
             listenBacklog="10"
             maxBufferPoolSize="524288" 
             maxBufferSize="65536" 
             maxConnections="10"
             maxReceivedMessageSize="65536">
      <readerQuotas maxDepth="32" 
                    maxStringContentLength="8192" 
                    maxArrayLength="16384"
                    maxBytesPerRead="4096" 
                    maxNameTableCharCount="16384" />
      <reliableSession ordered="true" 
                       inactivityTimeout="00:10:00"
                       enabled="false" />
      <security mode="Transport">
        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
      </security>
    </binding>
  </netTcpBinding>
</bindings>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WCF双工通信(Duplex communication)是一种通信方式,它允许客户端和服务器之间进行双向通信。在传统的客户端/服务器模型中,客户端通过发送请求来获取服务器的响应,而服务器没有办法主动向客户端发送信息。但在某些情况下,需要服务器能够主动向客户端发送信息,这时就可以使用WCF双工通信。 实现WCF双工通信需要以下步骤: 1. 定义服务契约:在服务契约中,需要定义一个双工操作,该操作将用于客户端和服务器之间的双向通信。例如: ``` [ServiceContract(CallbackContract = typeof(IMyServiceCallback))] public interface IMyService { [OperationContract(IsOneWay = true)] void MyOperation(); } public interface IMyServiceCallback { [OperationContract(IsOneWay = true)] void MyCallback(); } ``` 上面代码中,`IMyService`是服务契约,它包含一个双工操作`MyOperation`。`IMyServiceCallback`是回调契约,它包含一个回调操作`MyCallback`,用于服务器向客户端发送信息。 2. 实现服务:实现服务契约中的操作,包括双工操作和回调操作。例如: ``` [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] public class MyService : IMyService { public void MyOperation() { // 客户端调用了MyOperation操作 // 这里可以向客户端发送信息 OperationContext.Current.GetCallbackChannel<IMyServiceCallback>().MyCallback(); } } public class MyServiceCallback : IMyServiceCallback { public void MyCallback() { // 服务器调用了MyCallback操作 // 这里可以接收客户端发送的信息 } } ``` 上面代码中,`MyService`类实现了`IMyService`接口,包含一个双工操作`MyOperation`,它可以调用回调操作`MyCallback`,向客户端发送信息。`MyServiceCallback`类实现了`IMyServiceCallback`接口,包含一个回调操作`MyCallback`,用于接收客户端发送的信息。 3. 配置服务:在配置文件中配置服务绑定和终结点,以启用双工通信。例如: ``` <bindings> <netTcpBinding> <binding name="MyBinding" sendTimeout="00:01:00"> <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="true" /> <security mode="None" /> </binding> </netTcpBinding> </bindings> <services> <service name="MyNamespace.MyService"> <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyBinding" contract="MyNamespace.IMyService" /> </service> </services> ``` 上面代码中,使用`netTcpBinding`绑定配置了一个名为`MyBinding`的绑定,用于双工通信。在服务配置中,使用该绑定配置了一个终结点,用于绑定服务契约和实现类。 完成上述步骤后,就可以通过WCF双工通信实现客户端和服务器之间的双向通信了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值