對等通道自訂對等解析程式

自訂對等解析程式範例示範如何實作可以搭配對等通道應用程式使用的自訂解析程式。

這個範例是以自我裝載範例為基礎。如需 Windows Communication Foundation (WCF) 的高階概觀,請參閱使用者入門範例

ms751466.note(zh-tw,VS.90).gif注意:
此範例的安裝程序與建置指示位於本主題的結尾。

重要概念:

對等通道為 WCF 中的多方對等 (P2P) 通訊技術。它為應用程式開發人員提供了安全、可擴充的訊息 P2P 通訊通道。可以受惠於對等通道的多方應用程式有很多,其中一個常見的就是共同作業應用程式,例如交談應用程式,一群人可以在其中透過對等方式彼此交談,而不需要伺服器。對等通道能夠讓消費者和企業案例進行 P2P 共同作業、內容散發、負載平衡以及分散式處理。

對等通道引進了下列新概念:

  • 網狀結構」(Mesh) 是對等節點的具名集合 (相互連結的圖形),這些對等節點可以互相通訊,而且是透過唯一的網狀結構識別碼所識別。

    ms751466.note(zh-tw,VS.90).gif注意:
    網狀結構中的使用中節點會發行其網狀結構名稱,好讓其他節點能夠找到它們。網狀結構具有下列特性:它會隨著不斷改變的成員資格調整;在節點時常加入和離開網狀結構的環境中,提供彈性的連接能力,以及根據網路流量模式動態進行最佳化。

  • 對等節點」(Peer Node) 是網狀結構中的端點。應用程式可以擁有多個參與不同網狀結構的對等節點。

  • 對等通道」(Peer Channel) 是使用 netPeerTcpBinding 繫結或自訂繫結 (此繫結使用 PeerTransportBindingElement) 所建構的通道。

  • 對等解析程式」(Peer Resolver) 會負責將網狀結構識別碼解析為網狀結構中節點的端點位址。當對等節點開啟時,會使用對等解析程式將網狀結構識別碼解析為網狀結構中其他對等節點位址的清單。這會建立相連節點的網狀結構,讓訊息得以在整個網狀結構上傳播。

此範例會示範如何撰寫自訂對等解析程式 Web 服務,以及如何從可執行檔內自我裝載服務。用戶端並非獨立的應用程式,而是會與其他使用自訂對等解析程式的對等通道應用程式一起編譯。請參閱對等通道交談範例,以瞭解對等通道應用程式如何使用自訂對等解析程式的用戶端部分。

自訂對等解析程式服務屬於單一服務,它會快取網狀結構 ID 和字典中的端點位址,並會回應來自用戶端的註冊、移除註冊及解析要求。

網狀結構 ID 必須是唯一的。如果有多個應用程式使用相同的解析程式,它們就應該選擇不同的網狀結構 ID 以避免衝突。

範例會實作靜態的 main 函式,以便為指定的 CustomPeerResolverService 類型建立 ServiceHost。主機也會負責提供服務主機的基底位址,該位址已設定在組態檔 (App.config) 的應用程式設定中。

<appSettings>
    <!-- use appSetting to configure base address provided by host -->
    <add key="baseAddress"
     value=" net.tcp://localhost/servicemodelsamples/peerResolverService" />
</appSettings>

服務會實作公開 RegisterMeshId、UnregisterMeshId 和 ResolveMeshId 作業的合約。用戶端對指定的作業提出同步要求,服務則以結果回覆。

服務會公開單一端點來與使用組態檔 (App.config) 定義的服務進行通訊。繫結則是使用提供 TCP 通訊的標準 NetTcpBinding 所設定。

<services>
    <service 
       service="Microsoft.ServiceModel.Samples. CustomPeerResolverService">
       <!-- use base address provided by the host -->
       <endpoint address=""
            binding=" netTcpBinding "
             contract="Microsoft.ServiceModel.Samples. ICustomPeerResolver" />
    </service>
</services>

在設定之後,位於同一台電腦上的用戶端便可存取在 net.tcp://localhost/servicemodelsamples/peerResolverservice 上的服務。若要讓遠端電腦上的用戶端存取服務,就必須指定完整的網域名稱,而不是 localhost。

當您執行範例時,作業註冊和移除註冊訊息會顯示在服務主控台視窗中。如果對同一個網狀結構 ID 進行了多次註冊,則只有第一次的註冊和最後一次的移除註冊可以讓訊息顯示在主控台視窗中。在主控台視窗中按下 ENTER,即可關閉服務 (在關閉使用此服務的對等通道應用程式之後)。

ms751466.note(zh-tw,VS.90).gif注意:
此範例目前無法處理基礎結構擲回的所有可能例外狀況 (Exception)。如果您在商用或實際執行環境中使用這些範例,請遵循正確的例外狀況處理最佳做法。

若要設定、建置及執行範例

  1. 請確定您已執行 Windows Communication Foundation 範例的單次安裝程序

  2. 若要建置方案的 C#、C++ 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。

  3. 若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。對等通道交談範例應用程式也包含其本身的自訂對等解析程式實作。請遵循對等通道交談頁面中的指示,來建置和執行自訂解析程式以及對等交談執行個體。

Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.