Specifies a secure, reliable, optimized binding suitable for cross-machine communication. By default, it generates a runtime communication stack with Windows Security for message security and authentication, TCP for message delivery, and binary message encoding.
<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>
Attributes and Elements
The following sections describe attributes, child elements, and parent elements.
|closeTimeout||A TimeSpan value that specifies the interval of time provided for a close operation to complete. This value should be greater than or equal to Zero. The default is 00:01:00.|
|hostnameComparisonMode||Specifies the HTTP hostname comparison mode used to parse URIs. This attribute is of type
|listenBacklog||A positive integer that specifies the maximum number of channels waiting to be accepted on the listener. Connections in excess of this limit are queued until space below the limit becomes available. The
|maxBufferPoolSize||An integer that specifies the maximum buffer pool size for this binding. The default is 512 * 1024 bytes. Many parts of Windows Communication Foundation (WCF) use buffers. Creating and destroying buffers each time they are used is expensive, and garbage collection for buffers is also expensive. With buffer pools, you can take a buffer from the pool, use it, and return it to the pool once you are done. Thus the overhead in creating and destroying buffers is avoided.|
|maxBufferSize||A positive integer that specifies the maximum size, in bytes, of the buffer used to store messages in memory.
The default is 65536. For more information, see MaxBufferSize.
|maxConnections||An integer that specifies the maximum number of outbound and inbound connections the service will create/accept. Incoming and outgoing connections are counted against a separate limit specified by this attribute.
Inbound connections in excess of the limit are queued until a space below the limit becomes available.
Outbound connections in excess of the limit are queued until a space below the limit becomes available.
The default is 10.
|maxReceivedMessageSize||A positive integer that specifies the maximum message size, in bytes, including headers, that can be received on a channel configured with this binding. The sender of a message exceeding this limit will receive a SOAP fault. The receiver drops the message and creates an entry of the event in the trace log. The default is 65536.|
|name||A string that contains the configuration name of the binding. This value should be unique because it is used as an identification for the binding. Starting with .NET Framework 4, bindings and behaviors are not required to have a name. For more information about default configuration and nameless bindings and behaviors, see Simplified Configuration and Simplified Configuration for WCF Services.|
|openTimeout||A TimeSpan value that specifies the interval of time provided for an open operation to complete. This value should be greater than or equal to Zero. The default is 00:01:00.|
|portSharingEnabled||A Boolean value that specifies whether TCP port sharing is enabled for this connection. If this is
|receiveTimeout||A TimeSpan value that specifies the interval of time provided for a receive operation to complete. This value should be greater than or equal to Zero. The default is 00:10:00.|
|sendTimeout||A TimeSpan value that specifies the interval of time provided for a send operation to complete. This value should be greater than or equal to Zero. The default is 00:01:00.|
|transactionFlow||A Boolean value that specifies whether the binding supports flowing WS-Transactions. The default is
|transactionProtocol||Specifies the transaction protocol to be used with this binding. Valid values are
The default is OleTransactions. This attribute is of type TransactionProtocol.
|transferMode||A TransferMode value that specifies whether messages are buffered or streamed or a request or response.|
|<security>||Defines the security settings for the binding. This element is of type NetTcpSecurityElement.|
|<readerQuotas>||Defines the constraints on the complexity of SOAP messages that can be processed by endpoints configured with this binding. This element is of type XmlDictionaryReaderQuotasElement.|
|reliableSession||Specifies if reliable sessions are established between channel endpoints.|
|<bindings>||This element holds a collection of standard and custom bindings.|
This binding generates a run-time communication stack by default, which uses transport security, TCP for message delivery, and a binary message encoding. This binding is an appropriate Windows Communication Foundation (WCF) system-provided choice for communicating over an Intranet.
The default configuration for the
netTcpBinding is faster than the configuration provided by the
wsHttpBinding, but it is intended only for WCF-to-WCF communication. The security behavior is configurable using the optional
securityMode attribute. The use of WS-ReliableMessaging is configurable using the optional
reliableSessionEnabled attribute. But reliable messaging is off by default. More generally, the HTTP system-provided bindings such as
basicHttpBinding are configured to turn things on by default, whereas the
netTcpBinding binding turns things off by default so that you have to opt-in to get support, for example, for one of the WS-* specifications. This means that the default configuration for TCP is faster at exchanging messages between endpoints than those configured for the HTTP bindings by default.
The binding is specified in the configuration files for the client and service. The binding type is specified in the
binding attribute of the
<endpoint> element. If you want to configure the netTcpBinding binding and change some of its settings, it is necessary to define a binding configuration. The endpoint must reference the binding configuration with a
bindingConfiguration attribute. In the following example, a binding configuration is defined.
<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>