依本文路由
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.
若要安裝、建置及執行範例
若要建置解決方案,請依照建置 Windows Communication Foundation 範例中的指示操作。
若要在單一或多部電腦組態中執行此範例,請遵循執行 Windows Communication Foundation 範例中的指示進行。