服务层(中篇)
上一篇文章中,我们已经讲述了业务逻辑层和数据访问层层的设计和编码,下面我们就来讲述服务层的设计。如我们之前所讨论的:服务层想客户端暴露简单易用的API.
如下图所示:
在上图中:
1. ASPPatterns.Chap6.EventTickets.Contract: 这个类库中定义了服务层的接口契约。
2. ASPPatterns.Chap6.EventTickets.Service:这个类库中包含了上面接口契约的实现类以及业务逻辑的协调和数据的持久化和返回数据
3. ASPPatterns.Chap6.EventTickets.DataContract:这个类库中包含了客户端和服务端的数据契约对象;而且客户端 服务端之前采用”文档消息模式”来交换数据。
4. ASPPatterns.Chap6.EventTickets.HTTPHost:这个类库中host了WCF的服务。
下面就从数据契约开始讲述,其实这也是在定义服务的时候一个很重要的思想:契约优先(服务契约和数据契约)。
数据契约
在设计服务层的时候,首先就要定义出客户端和服务端的数据交换的结构和格式,要定出数据的scheme.
因为我们用WCF为例子,那么我们在数据契约的类库中引入:
System.Runtime.Serialization
System.ServiceModel
我们之前说过:在服务层设计中,我们准备采用”文档消息模式”和”请求-响应模式”。而且所有的响应对象都有一些共性,那么我们就首先定义一个响应类的基类,然后其他的响应都从继承它:
上海企业网站设计与制作div> [DataContract]
public abstract class Response
{
[DataMember]
public bool Success { get; set; }
[DataMember]
public string Message { get; set; }
}