在上一篇中讲解了,如何让一个WCF服务实现多个WCF数据契约,本篇介绍一个数据契约上的Name属性。先看一下,废话不多说,先看一下Demo。
1、数据契约
<span style="font-family:SimSun;font-size:18px;">using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace HelloService { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IHelloService”。 [ServiceContract(Name="IHello")] public interface IHelloService { [OperationContract] string GetMessage(string name); } } </span>
通过看上述DEMO估计看到了数据契约上方多出了一个Name的标签,那这是name标签是干什么的呢?
我们看一下契约最终生成的WSDL文档。
<span style="font-family:SimSun;font-size:18px;">-<wsdl:portType name="Ihello"> -<wsdl:operation name="GetMessage"> <wsdl:input message="tns:Ihello_GetMessage_InputMessage" wsaw:Action="http://tempuri.org/Ihello/GetMessage"/> <wsdl:output message="tns:Ihello_GetMessage_OutputMessage" wsaw:Action="http://tempuri.org/Ihello/GetMessageResponse"/> </wsdl:operation> </wsdl:portType></span>
看到上述生成的Name标签,所以从这里我们可以了解到。name标签与WSDL文档中的portType name标签是一致的,而这个portType又作为一个客户端与WCF服务通信的一个接口。所以有了Name这个属性,当我们服务端中的数据契约如果改名称的话,利用这个Name属性就可以做到,在客户端不中断的情况下,更改数据契约。
2、小结
本篇简单的介绍了数据契约的一个Name属性,利用此属性就可以做到,在不中断客户端的情况下,更改数据契约。下一篇讲解:WCF数据契约和数据成员
时间: 2024-10-10 21:43:36