指定一个适用于跨计算机通信的安全、可靠、优化的绑定。 默认情况下,它生成一个运行时通信堆栈,其中包含用于消息安全和身份验证的 Windows 安全性、用于消息传递的 TCP 和二进制消息编码。
<配置>
<system.serviceModel>
<绑定>
<netTcpBinding>
Syntax
<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"
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>
属性和元素
下列各节描述了特性、子元素和父元素。
特性
| Attribute | Description |
|---|---|
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 值,该值指定消息是缓冲还是流式传输,还是请求或响应。 |
子元素
| 元素 | Description |
|---|---|
| <安全> | 定义绑定的安全设置。 此元素的类型 NetTcpSecurityElement为 . |
| <readerQuotas> | 定义由使用此绑定配置的终结点可以处理的 SOAP 消息复杂性的约束。 此元素的类型 XmlDictionaryReaderQuotasElement为 . |
| <ReliableSession> | 指定是否在通道终结点之间建立可靠会话。 |
父元素
| 元素 | Description |
|---|---|
| <绑定> | 此元素包含标准绑定和自定义绑定的集合。 |
注解
默认情况下,此绑定会生成运行时通信堆栈,该堆栈使用传输安全性、TCP 进行消息传递和二进制消息编码。 此绑定是适当的 Windows Communication Foundation (WCF) 系统提供的用于通过 Intranet 进行通信的选择。
默认配置的速度比提供的wsHttpBinding配置netTcpBinding更快,但仅用于 WCF 通信。 可以使用可选 securityMode 属性配置安全行为。 可以使用可选 reliableSessionEnabled 属性配置 WS-ReliableMessaging 的使用。 但默认情况下,可靠消息传送处于关闭状态。 更普遍的是,HTTP 系统提供的绑定(例如 wsHttpBinding ,并 basicHttpBinding 配置为在默认情况下打开内容),而默认情况下绑定 netTcpBinding 会关闭某些内容,以便你必须选择加入以获取支持,例如,对于其中一个 WS-* 规范。 这意味着 TCP 的默认配置在终结点之间交换消息的速度比默认情况下为 HTTP 绑定配置的消息更快。
Example
绑定在客户端和服务配置文件中指定。 绑定类型在元素的属性<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>