码迷,mamicode.com
首页 > 其他好文 > 详细

打破传统三层架构,实现六层架构

时间:2016-08-23 16:31:45      阅读:335      评论:0      收藏:0      [点我收藏+]

标签:

版权声明:本文为博主原创文章,未经博主允许不得转载。

前言:对于一个项目的实现,往往都是,产品需求分析,产品设计,UI设计,数据库设计,后台编码,前端页面,各种测试,发布产品;

这个产品是我个人利用闲暇时间做着玩,包括网站,以及后台管理系统;额外说一句,前端页面是在网上下的模板,个人对前端不算精通。从产品分析到设计,以及数据库建立还有框架的搭建,我只花了2天时间,当然,这是个小网站,表的设计没有很多只有4-5张;

废话不多说了!

整个产品架构采用6层架构,主要目的是减少每层之间的耦合度以及依赖性,方便以后代码的复用和变动

图中每个箭头的指向代表引用

技术分享

解释下这6层的各自作用以及实现的功能:

Model层:这里没什么好讲的,主要是利用EntityFramework框架和codingfirst直接生成的各个类以及context,但还得自己加一个类,作为之后调用context入口时的唯一性,也就是再写一个单例模式的类

技术分享

IDAL层:是对DAL层的抽象,在这里我们定义了每个DAL层的行为规范,这里我们定义了四个,增删改查和分页查询,四个行为规范;为了体现代码质量,尽量避免写重复得代码,我又把这四个行为放到一个IbaseDao<T>,而具体的每个Idal只需继承即可,如图:

技术分享

 

DAL层:数据访问层,对于每张表都有的增删改查的功能,抽出来一个泛型BaseDao<T>在此类中实现上述IbaseDao定义的几个行为,而具体的每个DAO类只需要继承ibaseDao<T>,和其对应IDAL接口类

技术分享

 

Factory层:是BLLDal层进行交互的一个节点,本层采用依据传过来的IDAL接口,通过读取dal程序集,依据idao类型是不是其父类这个特性,找到dao,并返回给bll层;对于直接在BLL层中创建dao相比,耦合度大大的降低依赖性也不是那么重要,对于在后面的维护和复用是不言而喻的;代码下图:

 技术分享

 

BLL层:说到这个层,其实大家还可以去试一下,多加两个层IBLL,BLLfactory,其作用和上述的IDALfactory层大相径庭,作用也是减少BLLUI层的耦合度和依赖,在原来的三层中,BLL是直接new dal对象调其方法,但在本项目中,是调取Factory层的CreateDAO方法,而且不需要引用dal层,只需引用IDAL,在传过去的类型中我们也只需要把相应的dal的接口idal类型传过去,从而对dal层的依赖减少,代码如下图:

 技术分享

 

UI层:采用MVC框架搭建,对于数据前后台交互式采用强类型视图,一般是把需要的数据封装到Model中然后再前端操作;

 

打破传统三层架构,实现六层架构

标签:

原文地址:http://www.cnblogs.com/666qq/p/5799784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!