定義一種安全、可靠且優化於機器跨程序通訊的綁定。 預設情況下,它會產生一個執行時通訊堆疊,包含 WS-ReliableMessaging 以提升可靠性、傳輸安全性以保障傳輸安全、命名管線用於訊息傳遞,以及二進位訊息編碼。
<configuration>
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
語法
<netNamedPipeBinding>
<binding closeTimeout="TimeSpan"
hostNameComparisonMode="StrongWildCard/Exact/WeakWildcard"
maxBufferPoolSize="Integer"
maxBufferSize="Integer"
maxConnections="Integer"
maxReceivedMessageSize="Integer"
name="String"
openTimeout="TimeSpan"
receiveTimeout="TimeSpan"
sendTimeout="TimeSpan"
transactionFlow="Boolean"
transactionProtocol="OleTransactions/WS-AtomicTransactionOctober2004"
transferMode="Buffered/Streamed/StreamedRequest/StreamedResponse">
<security mode="None/Transport">
<transport protectionLevel="None/Sign/EncryptAndSign" />
</security>
<readerQuotas maxArrayLength="Integer"
maxBytesPerRead="Integer"
maxDepth="Integer"
maxNameTableCharCount="Integer"
maxStringContentLength="Integer" />
</binding>
</netNamedPipeBinding>
屬性和項目
下列各節說明屬性、子元素和父元素
Attributes
| Attribute | Description |
|---|---|
| 結束 時間 | 一個 TimeSpan 指定緊密操作完成所需時間間隔的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| hostNameComparisonMode | 指定用於解析 URI 的 HTTP 主機名稱比較模式。 此屬性的型別 HostNameComparisonMode為 ,表示在 URI 匹配時是否使用主機名稱來存取服務。 預設值為 StrongWildcard,忽略了配對中的主機名稱。 |
| maxBufferPoolSize | 一個整數,指定此綁定的最大緩衝池大小。 預設為 524,288 位元組(512 × 1024)。 Windows 通訊基礎(WCF)的許多部分都使用緩衝區。 每次使用緩衝區都建立與銷毀成本高昂,緩衝區的垃圾回收也同樣昂貴。 使用緩衝池時,你可以從緩衝池中取一個緩衝區,使用完畢後再歸還給池。 因此避免了建立與銷毀緩衝區的開銷。 |
| 最大緩衝區大小 | 一個正整數,指定用於儲存訊息的緩衝區最大大小(以位元組為單位)。 若緩衝區已滿,多餘資料會留在底層插槽中,直到緩衝區再次有空間。 這個值不能小於 maxReceivedMessageSize 屬性。 預設是 65536。 如需詳細資訊,請參閱MaxBufferSize。 |
| 最大連接數 | 一個整數,指定服務將建立/接受的最大出站與入站連線數量。 進出連線會依據此屬性指定的獨立限制計算。 超出限制的入站連線會排隊,直到有空位低於限制為止。 超出限制的出站連線會排隊,直到有空間低於限制。 預設值為 10。 |
| 最大接收訊息大小 | 一個正整數,指定在設定此綁定的通道上可接收的最大訊息大小(以位元組計,包括標頭)。 超過此限制的訊息發送者將收到 SOAP 錯誤。 接收端會丟棄訊息,並在追蹤日誌中建立事件的條目。 預設是 65536。 |
| 名稱 | 一個包含綁定設定名稱的字串。 這個值應該是唯一的,因為它是用來識別裝訂的。 從 .NET Framework 4 開始,綁定和行為不再需要名稱。 欲了解更多關於預設設定及無名綁定與行為的資訊,請參閱簡化設定與簡化配置(Simplified Configuration for WCF Services)。 |
| openTimeout | 一個 TimeSpan 指定開啟操作完成所需時間區間的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| 收到Timeout | 一個 TimeSpan 指定接收操作完成所需時間區間的值。 此值應大於或等 Zero於 。 預設值是 00:10:00。 |
| sendTimeout | 一個 TimeSpan 指定傳送操作完成所需時間間隔的值。 此值應大於或等 Zero於 。 預設值是 00:01:00。 |
| transactionFlow | 一個布林值,指定綁定是否支援流動的 WS-Transactions。 預設值為 false。 |
| transactionProtocol | 指定與此綁定一起使用的交易協定。 有效的數值為 - OleTransactions - WS-AtomicTransactionOctober2004 預設為 OleTransactions。 此屬性的類型 TransactionProtocol為 。 |
| 傳輸模式 | 一個 TransferMode 指定訊息是緩衝、串流、請求還是回應的值。 |
子專案
| 元素 | Description |
|---|---|
| <安全> | 定義綁定的安全設定。 此元素的類型 NetNamedPipeBindingElement為 。 |
| <讀者配額> | 定義了由端點可處理的 SOAP 訊息複雜度的限制,這些訊息可由配置為此綁定的端點所能處理。 此元素的類型 XmlDictionaryReaderQuotasElement為 。 |
父項目
| 元素 | Description |
|---|---|
| <裝訂> | 此元素包含標準與自訂裝訂的集合。 |
備註
預設會 NetNamedPipeBinding 產生執行時通訊堆疊,使用傳輸安全性、命名管線進行訊息傳遞,以及二進位訊息編碼。 此綁定是 Windows 通訊基金會(WCF)系統提供的機器上通訊適宜選擇。 它也支援交易。
預設 NetNamedPipeBinding 配置與 所提供的 NetTcpBinding配置相似,但更簡單,因為 WCF 實作僅供機器上使用,因此暴露功能較少。 最顯著的差異是設定 securityMode 只提供 None 和 Transport 選項。 SOAP 安全支援並非包含在內的選項。 安全性行為可透過可選 securityMode 屬性進行配置。
Example
以下範例展示了 netNamedPipeBinding 綁定,該綁定提供在同一台機器上的跨程序通訊。 命名管線無法跨機器運作。
綁定方式會在客戶端與服務的設定檔中指定。 綁定類型會在元素binding的屬性中指定<endpoint>。 如果你想設定 netNamedPipeBinding 綁定並更改部分設定,你必須定義一個綁定設定。 端點必須以名稱 bindingConfiguration 及屬性來參考綁定配置。 在此範例中,綁定配置稱為 Binding1。
<configuration>
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/service" />
</baseAddresses>
</host>
<!-- this endpoint is exposed at the base address provided by host: net.pipe://localhost/ServiceModelSamples/service -->
<endpoint address="net.pipe://localhost/ServiceModelSamples/service"
binding="netNamedPipeBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at http://localhost:8000/ServiceModelSamples/service/mex -->
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<netNamedPipeBinding>
<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"
maxBufferPoolSize="524288"
maxBufferSize="65536"
maxConnections="10"
maxReceivedMessageSize="65536">
<security mode="Transport">
<transport protectionLevel="EncryptAndSign" />
</security>
</binding>
</netNamedPipeBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>