共用方式為


依本文路由

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

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

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

下列範例會示範根據本文內容的訊息分派。 內建的 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 https://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. 若要在單一或跨機器的組態中執行本範例,請遵循Running the Windows Communication Foundation Samples中的指示進行。

ms750531.Important(zh-tw,VS.100).gif 注意:
這些範例可能已安裝在您的電腦上。 請先檢查下列 (預設) 目錄,然後再繼續。

<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\Interop\RouteByBody