UseAndStyle サンプルでは、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 表現には、次の例に示すように、操作と交換されるドキュメントを表す 1 つの要素が含まれます。
<wsdl:message name="IUseAndStyleCalculator_Add_InputMessage">
<wsdl:part name="parameters" element="tns:Add"/>
</wsdl:message>
Use プロパティは、メッセージの形式を決定します。 使用可能な値は、 Literal と Encodedです。既定値は Literal。 リテラルは、次の Document/Literal の例に示すように、メッセージが WSDL 内のスキーマのリテラル インスタンスであることを意味します。
<Add xmlns="http://Microsoft.ServiceModel.Samples">
<n1>100</n1>
<n2>15.99</n2>
</Add>
エンコードとは、WSDL 内のスキーマが SOAP 1.1 セクション 5 の規則に従ってエンコードされる抽象仕様であることを意味します。 RPC/Encoded の例を次に示します。
<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 の使用が禁止されているため、従来のサービスで必要な場合にのみ使用してください。
Encoded
メッセージ形式は、XmlSerializer を使用する場合にのみ使用できます。
送受信されるメッセージを確認できるようにするために、このサンプルは トレースとメッセージ ログに基づいています。 サービス構成とソース コードは、トレースとメッセージ ログを有効にして利用するように変更されています。 さらに、 WSHttpBinding はセキュリティなしで構成されているため、ログに記録されたメッセージは暗号化されていない形式で表示できます。 結果のトレース ログ (System.ServiceModel.e2e と Message.log) は、 サービス トレース ビューアー ツール (SvcTraceViewer.exe) を使用して表示する必要があります。 トレースは、C:\LOGS フォルダーに作成されるように構成されています。 サンプルを実行する前に、フォルダーを作成します。 トレース ビューアー ツールでメッセージの内容を表示するには、ツールの左側と右側の両方のペインで [メッセージ ] を選択します。
次のコードは、 Use プロパティが OperationFormatUse に設定されたサービス コントラクトと、既定の OperationFormatStyle から 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 ファイルを調べます。 また、 http://localhost/ServiceModelSamples/service.svc?wsdl
を表示して、メタデータへの影響を確認します。 通常、サービスのメタデータは複数のページに分割されます。 メインの wsdl ページには WSDL バインディングが含まれていますが、メッセージ定義を確認するための http://localhost/ServiceModelSamples/service.svc?wsdl=wsdl0
を表示します。
サンプルを設定、ビルド、実行するには
Windows Communication Foundation サンプル のOne-Time セットアップ手順を実行していることを確認します。
メッセージをログに記録するための C:\LOGS ディレクトリを作成します。 このディレクトリに対するネットワーク サービスの書き込みアクセス許可をユーザーに付与します。
ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。
単一または複数のコンピューター間の構成でサンプルを実行するには、「Windows Communication Foundation Samplesの実行」の手順に従います。