共用方式為


依本文路由

RouteByBody 範例會示範如何實作使用任何 SOAP 動作接受訊息物件的服務。 這個範例是以實作計算機服務的使用者入門範例為基礎。 此服務會實作接受 Calculate 要求參數並傳回 Message 回應的單一 Message 作業。

在這個範例中,用戶端是主控台應用程式 (.exe),而服務是裝載在 IIS 中。

注意

此範例的安裝程序與建置指示位於本主題的結尾。

下列範例會示範根據本文內容的訊息分派。 內建的 Windows Communication Foundation (WCF) 服務模型訊息分派機制是以訊息「動作」為基礎。 然而,有很多現有的 Web 服務以 Action="" 定義其所有作業。 根據以 Action 資訊為基礎保留分派要求訊息的 WSDL 來建置服務,是不可能的。 這個範例會示範根據 WSDL 的服務合約 (WSDL 包含在範例隨附的 Service.wsdl 中)。 服務合約是計算機,類似快速入門中所使用的計算機。 不過,[OperationContract] 會指定所有作業的 Action=""

[ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples"),
                 XmlSerializerFormat, DispatchByBodyBehavior]
    public interface ICalculator
    {
        [OperationContract(Action="")]
        double Add(double n1, double n2);
        [OperationContract(Action = "")]
        double Subtract(double n1, double n2);
        [OperationContract(Action = "")]
        double Multiply(double n1, double n2);
        [OperationContract(Action = "")]
        double Divide(double n1, double n2);
    }

如果是合約,服務需要自訂分派行為 DispatchByBodyBehavior,以允許在作業之間分派訊息。 這個分派行為會以個別包裝元素之 QName 輸入的作業名稱資料表初始化 DispatchByBodyElementOperationSelector 自訂作業選取器。 DispatchByBodyElementOperationSelector 會查看本文之第一個子系的開始標記,並使用先前提到的資料表來選取作業。

用戶端會使用從 WSDL (使用 ServiceModel 中繼資料公用程式工具 (Svcutil.exe) 的服務所匯出) 中自動產生的 Proxy。

svcutil.exe  /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples /uxs http://localhost/servicemodelsamples/service.svc?wsdl /out:generatedProxy.cs

除了自動產生之 Proxy 中的 Action 參數以外,所有作業的動作都是空的,這事實對用戶端程式碼沒有影響。

用戶端程式碼會執行數次計算。 當您執行範例時,作業要求和回應會顯示在用戶端主控台視窗中。 在用戶端視窗中按下 ENTER 鍵,即可關閉用戶端。

Add(100, 15.99) = 115.99
Subtract(145, 76.54) = 68.46
Multiply(9, 81.25) = 731.25
Divide(22, 7) = 3.14285714285714

Press <ENTER> to terminate client.

若要安裝、建置及執行範例

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

  2. 若要建置解決方案,請依照建置 Windows Communication Foundation 範例中的指示操作。

  3. 若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。