共用方式為


設定 Use 與 Style 屬性

這個範例會示範如何在 XmlSerializerFormatAttributeDataContractFormatAttribute 上使用 Use 和 Style 屬性。這些屬性會影響訊息的格式化方式。根據預設,會以設為 Document 的樣式來格式化訊息本文。這些設定可以指定於服務合約層級或作業合約層級。

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

Style 樣式屬性會判斷該服務之 WSDL 中繼資料格式化的方式。可能的值為 DocumentRpc。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 屬性會決定訊息的格式。可能的值為 LiteralEncoded;預設值為 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);
}

若要檢視不同 UseStyle 設定之間的差異,請修改服務中的這些設定,接著重新產生用戶端、執行範例,然後使用服務追蹤檢視器工具檢查 c:\logs\message.logs 檔。同時檢視 https://localhost/ServiceModelSamples/service.svc?wsdl 來觀察對中繼資料的影響。服務的中繼資料通常會分成好幾頁。主要的 wsdl 頁面會包含 WSDL 繫結,但是若要觀察訊息定義則要檢視 https://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0。

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

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

  2. 建立用於記錄訊息的 C:\LOGS 目錄。給予使用者這個目錄的網路服務寫入權限。

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

  4. 若要在單一或跨電腦的組態中執行本範例,請遵循執行 Windows Communication Foundation 範例中的指示。

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