一、上章回顾
上篇我们主要讲解了系统架构中的四种架构模式,并且分析了四种架构模式的实现及应用场景,那么先来回顾下架构中的业务逻辑层的使用及总结。
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/DA12210289.png" />
如果大家对图中讲述的内容不明白或者说是不深入那么可以参考上篇讲
解的内容:系统架构师-基础到企业应用架构-业务逻辑层。
二、摘要
本文将已架构的方式去分析分层结构中的服务层的设计,如何设计出来满足我们说的业务需求及设计规范的服务层将是我们的目标,可能我想大家在项目架构的
过程中可能有些同仁,没有用到该层,或者说是采用的是常用的分层结构的设计,而没有把服务层单独的抽出来,当然我们必须首先知道服务层是干什么用的?为什么
要单独写一个服务层呢?还有就是设计服务层我们从哪些方面入手呢?及怎么判定一个服务层设计的好坏呢?这些都是本章要讲解的具体内容,当然本文中的内容都是
本人平时在项目中的一些经验,可能在一些有丰富经验设计的大牛面前,我讲解的都是皮毛,但是我抱着能给初学者指引和为已知者温习的目的而写,错误之处再所难
免,请大家提出宝贵意见和建议。本文讲述以下内容:
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/8312210385.png" />
下面我们将针对上面的问题分别进行讲述。
三、本章大纲
1、上章回顾。
2、摘要。
3、本章大纲。
4、服务层的介绍。
5、服务层实战。
6、本章总结。
7、系列进度。
8、下篇预告。
四、服务层的介绍
本节中将会对服务层的设计进行详细的分析。我们知道我们现在在软件开发的过程中,通常我们会将一些业务逻辑的代码写在表现层,当然这样的方式不是不允
许,当然一般情况下来说我们感觉没什么,但是采用这样的方式,那么表现层与业务逻辑层之间的关系是耦合性的,可能我们是属于那种希望设计简洁或者说对设计规
范严格要求的时候,那么我们就可以考虑将业务逻辑的组织通过服务层来实现,那么服务层的作用就是将表现层与业务逻辑层之间完成解耦。那么表现层中就不会出现
任何的业务代码,当然这样带来的好处也是显而易见的,就是当我们修改业务层代码时,我们不需要修改表现层的代码,当然如果服务层设计的不好,那么可能会造成
反效果。
服务层是干什么的? 通过上面的简单介绍,我想大家都对服务层有了个简单的认识,那么下面我们还是通过图形的方式来看看服务层的位置及作用吧,可能那样
更容易理解。
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/7D12210355.png" />
这几层之间都是通过数据传输对象来完成各层之间的数据通信。通过上图我们知道,服务层是通过数据传输对象
与业务逻辑层直接进行交互,那么业务逻辑层与服务层具体交互的方式及内容是什么呢?
下面我们来看看,业务逻辑层中的四种模式在服务层中的表现。
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/6E12210877.png" />
下面我们来举例说明服务层的作用。通过表现层与业务逻辑的解耦来说明服务层的作用。我们还是以B2C中的购物流程来说。
我们先以购物流程中的添加产品到购物车来说
498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/12/3312210317.png" />
可以简单的看作下面几个对象之间的交互,首先我们先要选择产品,然后将产品添加到购物车
中,然后当然这个购物车是某个会员登陆以后的购物清单,一个购物车中可能有多个产品。我们来看看代码可能如下:
我们定义的产品信息如下:
- /// <summary>
- /// 产品信息
- /// </summary>
- public class Product
- {
- /// <summary>
- /// 返回所有的产品信息
- /// </summary>
- /// <returns></returns>
- public List<Product> GetAll()
- {
- return new List<Product>();
- }
- /// <summary>
- /// 返回产品信息根据产品ID
- /// </summary>
- /// <returns></returns>
- public Product GetByID(int ID)
- {
- return new Product();
- }
- }
产