設定 Use 與 Style 屬性
這個範例會示範如何在 XmlSerializerFormatAttribute 和 DataContractFormatAttribute 上使用 Use 和 Style 屬性。這些屬性會影響訊息的格式化方式。根據預設,會以設為 Document 的樣式來格式化訊息本文。這些設定可以指定於服務合約層級或作業合約層級。
注意: |
---|
此範例的安裝程序與建置指示位於本主題的結尾。 |
Style 樣式屬性會判斷該服務之 WSDL 中繼資料格式化的方式。可能的值為 Document 和 Rpc。RPC 表示為某個作業交換之訊息的 WSDL 表示法,如同遠端程序呼叫一般含有參數。範例如下。
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="n1" type="xsd:double"/>
<wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>
將樣式設為 Document 代表 WSDL 表示法含有一個代表文件的項目,此文件會為某作業進行交換,如以下範例所示。
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
Use 屬性會決定訊息的格式。可能的值為 Literal 和 Encoded;預設值為 Literal。Literal 表示訊息是 WSDL 中結構描述的常值 (Literal) 執行個體,如下列 Document/Literal 範例所示。
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
Encoded 表示 WSDL 中的結構描述是根據 SOAP 1.1 第 5 節之規則編碼的抽象規格。下列是 RPC/Encoded 範例。
<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
<n1 xsi:type="xsd:double" >100</n1>
<n2 xsi:type="xsd:double" >15.99</n2>
</q1:Add>
WS-I Basic Profile 1.0 禁止使用 Encoded,只有在舊版服務需要時才使用這個項目。此 Encoded 訊息格式只會在使用 XmlSerializer 時才會提供。
為了讓您可以看到已傳送和已接收的訊息,這個範例會以追蹤和訊息記錄為基礎。服務組態與原始程式碼已修改成啟用並利用追蹤以及訊息記錄。此外,WsHttpBinding 已經設定成不使用安全性,因此已記錄的訊息可以用未加密的格式檢視。產生的追蹤記錄檔 (System.ServiceModel.e2e 和 Message.log) 應該使用Service Trace Viewer Tool來加以檢視。這些追蹤已設定為建立在 C:\LOGS 資料夾中。先建立資料夾,再執行此範例。若要在追蹤檢視器工具中檢視訊息內容,請同時選取工具左窗格和右窗格中的 [訊息]。
下列程式碼會示範 Use 屬性已設為 Encoded,而訊息本文格式已從預設的 Document 變更為 Rpc 的服務合約。
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples"),
XmlSerializerFormat(Style = OperationFormatStyle.Rpc,
Use = OperationFormatUse.Encoded)]
public interface IUseAndStyleCalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
若要檢視不同 Use 和 Style 設定之間的差異,請修改服務中的這些設定,接著重新產生用戶端、執行範例,然後使用服務追蹤檢視器工具檢查 c:\logs\message.logs 檔。同時檢視 https://localhost/ServiceModelSamples/service.svc?wsdl 來觀察對中繼資料的影響。服務的中繼資料通常會分成好幾頁。主要的 wsdl 頁面會包含 WSDL 繫結,但是若要觀察訊息定義則要檢視 https://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0。
若要設定、建置及執行範例
建立用於記錄訊息的 C:\LOGS 目錄。給予使用者這個目錄的網路服務寫入權限。
若要建置方案的 C# 或 Visual Basic .NET 版本,請遵循建置 Windows Communication Foundation 範例中的指示。
若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。
Send comments about this topic to Microsoft.
© 2007 Microsoft Corporation. All rights reserved.