Use および Style プロパティの設定Setting the Use and Style Properties

このサンプルでは、XmlSerializerFormatAttributeDataContractFormatAttribute で Use および Style プロパティを使用する方法を示します。This sample demonstrates how to use the Use and Style properties on the XmlSerializerFormatAttribute and the DataContractFormatAttribute. これらのプロパティは、メッセージの書式設定の方法を制御します。These properties affect how messages are formatted. 既定では、メッセージの本文は、Document に設定されたスタイルを使用して書式設定されます。By default, the message body is formatted with the style set to Document. こうした設定は、サービス コントラクト レベルと操作コントラクト レベルのどちらのレベルでも指定できます。These settings can be specified at either the service contract level or the operation contract level.

注意

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。The setup procedure and build instructions for this sample are located at the end of this topic.

Style スタイル プロパティは、サービスの WSDL メタデータの書式設定を決定します。The Style style property determines how the WSDL metadata for the service is formatted. 使用可能な値は DocumentRpc です。Possible values are Document, and Rpc. RPC は、操作で交換されるメッセージの WSDL 表現がリモート プロシージャ コールである場合と同様のパラメータを含むことを意味します。RPC means that the WSDL representation of messages exchanged for an operation contains parameters as if it were a remote procedure call. 次に例を示します。The following is an example.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="n1" type="xsd:double"/>
  <wsdl:part name="n2" type="xsd:double"/>
</wsdl:message>

スタイルに対する Document への設定は、WSDL 表現には操作で交換されるドキュメントを表す単一の要素が含まれることを意味します。この例を次に示します。Setting the style to Document means that the WSDL representation contains a single element that represents the document that is exchanged for an operation as shown in the following example.

<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
  <wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>

Use プロパティは、メッセージの書式を決定します。The Use property determines the format of the message. 使用可能な値は LiteralEncoded で、既定値は Literal です。Possible values are Literal and Encoded; the default value is Literal. Literal は、メッセージが WSDL 内のスキーマのリテラル インスタンスであることを意味します。Document/Literal の例を次に示します。Literal means that the message is a literal instance of the schema in the WSDL as shown in the following Document/ Literal example.

<Add xmlns="http://Microsoft.ServiceModel.Samples">
  <n1>100</n1>
  <n2>15.99</n2>
</Add>

Encoded は、WSDL 内のスキーマが、SOAP 1.1 のセクション 5 に規定されているルールに従ってエンコードされる抽象仕様であることを意味します。Encoded means that the schemas in the WSDL are abstract specifications that are encoded according to the rules found in SOAP 1.1 section 5. RPC/Encoded の例を次に示します。The following is an RPC/Encoded example.

<q1:Add xmlns:q1="http://Microsoft.ServiceModel.Samples">
  <n1 xsi:type="xsd:double" xmlns="">100</n1>
  <n2 xsi:type="xsd:double" xmlns="">15.99</n2>
</q1:Add>

WS-I Basic Profile 1.0 では Encoded の使用が禁止されています。したがって、これを使用するのは従来のサービスで必要な場合に限ります。The WS-I Basic Profile 1.0 prohibits the use of Encoded and you should only use it when required by legacy services. Encoded メッセージ形式は、XmlSerializer を使用する場合にのみ利用可能です。The Encoded message format is only available when using the XmlSerializer.

このサンプルは、送受信されるメッセージを確認できるように、トレースとメッセージログに基づいています。To allow you to see the messages being sent and received, this sample is based on the Tracing and Message Logging. サービス構成とソース コードは、トレースとメッセージ ログを有効化して利用できるように変更されています。The service configuration and source code have been modified to enable and utilize tracing and message logging. さらに、WSHttpBinding はセキュリティを無効にして構成されているので、ログに記録されたメッセージは暗号化されていない状態で表示できます。In addition, the WSHttpBinding has been configured without security, so the logged messages can be viewed in an unencrypted format. 生成されたトレースログ (e2e と .log) は、サービストレースビューアーツール (svctraceviewer.exe)を使用して表示する必要があります。The resulting trace logs (System.ServiceModel.e2e and Message.log) should be viewed by using the Service Trace Viewer Tool (SvcTraceViewer.exe). トレースは、C:\LOGS フォルダーに作成されるように構成されています。The traces are configured to be created in the C:\LOGS folder. サンプルを実行する前に、このフォルダーを作成します。Create the folder before running the sample. トレースビューアーツールでメッセージの内容を表示するには、ツールの左側と右側の両方のウィンドウで [メッセージ] を選択します。To view message contents in the Trace Viewer tool, select Messages in both the left and the right panes of the tool.

次のコードでは、サービス コントラクトの Use プロパティが OperationFormatUse に設定され、メッセージ本文の形式が既定の OperationFormatStyle から Document に変更されています。The following code shows the service contract with the Use property set to OperationFormatUse and the format of the message body changed from the default OperationFormatStyle to Document.

[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 ファイルを調べます。To see the difference between the different Use and Style settings, modify them in the service, regenerate the client, run the sample, and examine the c:\logs\message.logs file with the Service Trace Viewer tool. 表示しても、メタデータへの影響を観察 http://localhost/ServiceModelSamples/service.svc?wsdl です。Also observe the impact on the metadata by viewing http://localhost/ServiceModelSamples/service.svc?wsdl. 通常、サービスのメタデータは複数のページに分割されます。The metadata for services is typically broken up into multiple pages. メインの wsdl ページには、WSDL バインディングが含まれていますが、表示 http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 メッセージの定義を確認します。The main wsdl page contains the WSDL bindings, but view http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0 to observe the message definitions.

サンプルをセットアップ、ビルド、および実行するにはTo set up, build, and run the sample

  1. Windows Communication Foundation サンプルの1回限りのセットアップ手順を実行したことを確認します。Ensure that you have performed the One-Time Setup Procedure for the Windows Communication Foundation Samples.

  2. メッセージのログ記録用に C:\LOGS ディレクトリを作成します。Create a C:\LOGS directory for logging messages. ユーザー Network Service にそのディレクトリの書き込み権限を与えます。Give the user Network Service write permissions for this directory.

  3. ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。To build the C# or Visual Basic .NET edition of the solution, follow the instructions in Building the Windows Communication Foundation Samples.

  4. サンプルを単一コンピューター構成または複数コンピューター構成で実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。To run the sample in a single- or cross-machine configuration, follow the instructions in Running the Windows Communication Foundation Samples.

重要

サンプルは、既にコンピューターにインストールされている場合があります。The samples may already be installed on your machine. 続行する前に、次の (既定の) ディレクトリを確認してください。Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

このディレクトリが存在しない場合は、 Windows Communication Foundation (wcf) および Windows Workflow Foundation (WF) のサンプルの .NET Framework 4にアクセスして、すべてのWFWF Windows Communication Foundation (wcf) とサンプルをダウンロードしてください。If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. このサンプルは、次のディレクトリに格納されます。This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WCF\Basic\Contract\Message\UseAndStyle