Restful WCF开发实践 互动版

契约

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对类和成员来进行了标记,公开作为数据契约以在服务中使用。