在上一篇中讲解了,如何让一个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数据契约和数据成员