本示例演示如何使用 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。文本表示该消息是 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" >100</n1>
<n2 xsi:type="xsd:double" >15.99</n2>
</q1:Add>
WS-I 基本配置文件 1.0 禁止使用 Encoded,只能在旧式服务需要时使用它。仅当使用 XmlSerializer 时,Encoded 消息格式才可用。
为了让您看到正在发送和接收的消息,本示例基于跟踪和消息日志记录。已将服务配置和源代码修改为启用和使用跟踪和消息日志记录。此外,配置 WsHttpBinding 时没有使用安全性,因此可以以未加密的格式查看记录的消息。应使用Service Trace Viewer Tool来查看生成的跟踪日志(System.ServiceModel.e2e 和 Message.log)。将跟踪配置为在 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.