規範一種安全、可靠且優化的綁定方式,適用於跨機器通訊。 預設情況下,它會產生一個執行時通訊堆疊,包含 Windows Security 用於訊息安全與認證、TCP 用於訊息傳遞,以及二進位訊息編碼。
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
語法
<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>
屬性和元素
下列章節說明屬性、子元素和父元素。
Attributes
| Attribute | Description |
|---|---|
closeTimeout |
一個 TimeSpan 指定緊密操作完成所需時間間隔的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
hostNameComparisonMode |
指定用於解析 URI 的 HTTP 主機名稱比較模式。 此屬性的型別 HostNameComparisonMode為 ,表示在 URI 匹配時是否使用主機名稱來存取服務。 預設值為 StrongWildcard,忽略了配對中的主機名稱。 |
listenBacklog |
一個正整數,表示聆聽者等待接受的最大通道數量。 超過此限制的連線會排隊,直到空間低於上限。 此 connectionTimeout 屬性限制用戶端等待連線的時間,然後再拋出連線例外。 預設值為 10。 |
maxBufferPoolSize |
一個整數,指定此綁定的最大緩衝池大小。 預設是 512 * 1024 位元組。 Windows 通訊基礎(WCF)的許多部分都使用緩衝區。 每次使用緩衝區都建立與銷毀成本高昂,緩衝區的垃圾回收也同樣昂貴。 使用緩衝池時,你可以從緩衝池中取一個緩衝區,使用完畢後再歸還給池。 因此避免了建立與銷毀緩衝區的開銷。 |
maxBufferSize |
一個正整數,指定用於儲存訊息的緩衝區最大大小(以位元組為單位)。 若屬性 transferMode 等 Buffered於 ,則該屬性應 maxReceivedMessageSize 等於屬性值。若屬性 transferMode 等於 Streamed,該屬性不得大於 maxReceivedMessageSize 屬性值,且至少應等於標頭大小。預設是 65536。 如需詳細資訊,請參閱MaxBufferSize。 |
maxConnections |
一個整數,指定服務將建立/接受的最大出站與入站連線數量。 進出連線會依據此屬性指定的獨立限制計算。 超出限制的入站連線會排隊,直到有空位低於限制為止。 超出限制的出站連線會排隊,直到有空間低於限制。 預設值為 10。 |
maxReceivedMessageSize |
一個正整數,指定在設定此綁定的通道上可接收的最大訊息大小(以位元組計,包括標頭)。 超過此限制的訊息發送者將收到 SOAP 錯誤。 接收端會丟棄訊息,並在追蹤日誌中建立事件的條目。 預設是 65536。 |
name |
一個包含綁定設定名稱的字串。 這個值應該是唯一的,因為它是用來識別裝訂的。 從 .NET Framework 4 開始,綁定和行為不再需要名稱。 欲了解更多關於預設設定及無名綁定與行為的資訊,請參閱簡化設定與簡化配置(Simplified Configuration for WCF Services)。 |
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 - WSAtomicTransaction,2004年10月 預設為 OleTransactions。 此屬性的類型 TransactionProtocol為 。 |
transferMode |
一個 TransferMode 指定訊息是緩衝、串流、請求還是回應的值。 |
子專案
| 元素 | Description |
|---|---|
| <安全> | 定義綁定的安全設定。 此元素的類型 NetTcpSecurityElement為 。 |
| <讀者配額> | 定義了由端點可處理的 SOAP 訊息複雜度的限制,這些訊息可由配置為此綁定的端點所能處理。 此元素的類型 XmlDictionaryReaderQuotasElement為 。 |
| <可靠會話> | 規定通道端點間是否建立可靠的會話。 |
父元素
| 元素 | Description |
|---|---|
| <裝訂> | 此元素包含標準與自訂裝訂的集合。 |
備註
此綁定預設產生執行時通訊堆疊,使用傳輸安全、TCP 進行訊息傳遞及二進位訊息編碼。 此綁定是 Windows 通訊基金會(WCF)系統提供的內聯網通訊選擇。
預設 netTcpBinding 配置比 所提供的 wsHttpBinding配置更快,但僅用於 WCF 通訊。 安全性行為可透過可選 securityMode 屬性進行配置。 WS-ReliableMessaging 的使用可透過可選 reliableSessionEnabled 屬性進行配置。 但可靠的訊息預設是關閉的。 更一般來說,HTTP 系統提供的綁定,例如 wsHttpBinding 和 basicHttpBinding ,預設是開啟這些功能,而 netTcpBinding 綁定則預設關閉,因此你必須選擇加入才能獲得支援,例如某個 WS-* 規範。 這表示 TCP 預設配置在端點間訊息交換速度比預設為 HTTP 綁定時更快。
Example
綁定方式會在客戶端與服務的設定檔中指定。 綁定類型會在元素binding的屬性中指定<endpoint>。 如果你想設定 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>