契约
WCF的所有服务都公开为契约(Contract),契约与平台无关,是描述服务功能的标准方式。契约也就是服务端与客户端之间的沟通协议,以接口的方式来实现。WCF通过契约的方式,实现了服务端与客户端的松耦合。
WCF中的契约可分为以下四种:
- 服务契约:定义了服务端提供的所有服务操作
- 数据契约:定义了服务端与客户端交互的数据对象
- 错误契约:定义了服务抛出的错误,以及服务处理错误和传递错误到客户端的方式
- 消息契约:消息契约允许服务定制专有的消息格式和消息交换模式
这里我们来创建一个项目WcfService.Contract,来定义数据契约(Data Contract)和服务契约(Service Contract)。该项目引用了System.ServiceMode程序集,WCF框架的绝大部分实现和API都定义在该程序集中。
定义数据契约
[DataContract]
public class Employee
{
[DataMember]
public string Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public string Department { get; set; }
[DataMember]
public string Grade { get; set; }
public override string ToString()
{
return string.Format("ID: {0,-5}姓名: {1, -5}部门: {2,-5}级别: {3, -5} ", Id, Name, Department, Grade);
}
}
上述代码定义了一个Employee类,重写了ToString()方法,并通过[DataContract]和[DataMember]两个Attribute对类和成员来进行了标记,公开作为数据契约以在服务中使用。