NetHttpBinding
NetHttpBinding 範例示範如何實作在 BinaryMessageEncodingBindingElement 的最上層堆疊 HttpTransportBindingElement 或 HttpsTransportBindingElement 的繫結。 隨附在 Windows Communication Foundation (WCF) 的 HTTP 架構的系統定義繫結,例如在 TextMessageEncodingBindingElement 最上層的 BasicHttpBinding 或 WsHttpBinding 層 HTTP,主要允許傳送與接收 Text/Xml 之類的訊息以便互相操作。 隨附在 Windows Communication Foundation (WCF) 的 TCP 與具名管道架構的系統提供繫結,例如 NetTcpBinding 或 NetNamedPipeBinding,會以二進位格式來寫入與取用訊息。 儘管二進位格式彼此無法互通,卻是比較有效率,而且容易調整以求得最佳效能。
注意: |
---|
此範例的安裝程序與建置指示位於本主題的結尾。 |
注意: |
---|
這些範例可能已安裝在您的電腦上。 請先檢查下列 (預設) 目錄,然後再繼續。
<InstallDrive>:\WF_WCF_Samples
如果此目錄不存在,請移至用於 .NET Framework 4 的 Windows Communication Foundation (WCF) 與 Windows Workflow Foundation (WF) 範例 (英文),以下載所有 Windows Communication Foundation (WCF) 和 WF 範例。 此範例位於下列目錄。
<InstallDrive>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding
|
此範例示範如何使用 WCF 架構,在通道堆疊中合併想要的繫結項目以依照自己的方式來設定繫結。 建立自訂繫結的步驟如下:
決定您要堆疊在一起的繫結項目,以建立自己的繫結。
確定了解要讓堆疊正常運作,必須遵守的繫結項目堆疊順序。 例如,您希望在堆疊底部新增傳輸。
建立自己的 Binding 類別 (繼承自 Binding)。 在這特定情況下,NetHttpBinding 同時會實作 ISecurityCapabilities 介面,因為它可讓此繫結的使用者能夠檢查 ProtectionLevel,以確定其繫結是否支援用戶端與伺服器驗證。
繫結會公開必須讓使用者知曉的其他屬性,讓使用者設定構成的繫結項目。 例如,我們會將 BypassProxyOnLocal 屬性顯示出來,以便在基礎 HTTP 或 HTTPS TransportBindingElement 上設定相同的屬性。
在 CreateBindingElements 方法中,此範例會示範繫結項目必須使用的堆疊順序。 例如,它會先新增編碼器,然後是傳輸,因為傳輸必須位於繫結堆疊的底層。
最後,實作 ApplyConfiguration 方法,以透過組態來允許填入 NetHttpBinding。 事實上,為了可以從組態檔中設定您的繫結,還需要其他幾項類別。 很幸運地,您可以使用 ConfigurationCodeGenerator 工具來為您建立這些類別。 WCF 範例中將同時提供 ConfigurationCodeGenerator 工具。
NetHttpBinding 範例服務
使用 NetHttpBinding 的範例服務位於服務子目錄中。 用來設定端點的繫結是 NetHttpBinding。 範例服務會透過 Main 方法來自我裝載,但是也可以裝載到網際網路資訊服務 (IIS) 中。
NetHttpBinding 範例用戶端
用戶端同時會將其繫結設定為 NetHttpBinding 以連接服務。 用戶端會示範透過程式碼或組態來設定繫結。 它能透過組態來設定 NetHttpBinding 的原因主要是因為它新增了一些可向組態公開繫結的類別。 如先前所述,ConfigurationCodeGenerator 工具可協助您產生這些類別。
若要設定和建置範例
使用下列命令安裝 ASP.NET 4.0。
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
若要建立方案,請遵循建置 Windows Communication Foundation 範例中的指示進行。
確認路徑中包含 Makecert.exe 所在的資料夾。
在即將執行伺服器的電腦上,請從範例安裝資料夾中執行 Setup.bat,以建立伺服器所需的伺服器憑證及其簽發者憑證。
在相同的伺服器電腦上,請遵循概念性文件中有關設定 HTTP 和 HTTPS 的指示,使用 HTTP.SYS 來設定伺服器憑證。
若要在同一部電腦上執行範例
從 service\bin 啟動 Service.exe。 服務活動會顯示在服務主控台視窗上。
從 \client\bin 啟動 Client.exe。 用戶端活動會顯示在用戶端主控台應用程式上。
當您完成範例時,執行 Cleanup.bat 以移除憑證。
若要跨電腦執行範例
從 service\bin 啟動 Service.exe。 服務活動會顯示在服務主控台視窗上。
由於伺服器會自我裝載,如果您要將用戶端與伺服器當成網域使用者來執行,請務必在用戶端的 App.config 檔案中指定身分識別:
<client> <endpoint name="EchoServer" address= https://localhost:8000/TestService/BinaryEncoderOverHTTP binding= "netHttpBinding" bindingConfiguration="netHttpBinding" contract= "Microsoft.ServiceModel.Samples.Client.IEchoService" > <identity> <userPrincipalName value="user_name@service_domain"/> </identity> </endpoint> </client>
從 \client\bin 啟動 Client.exe:將服務視窗中的 HTTPS URL 當成命令列參數來傳送。 用戶端活動會顯示在用戶端主控台應用程式上。
當您完成範例時,執行 Cleanup.bat 以移除憑證。