版权声明:本文为博主原创文章,未经博主允许不得转载。
前言:对于一个项目的实现,往往都是,产品需求分析,产品设计,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层:是BLL与Dal层进行交互的一个节点,本层采用依据传过来的IDAL接口,通过读取dal程序集,依据idao类型是不是其父类这个特性,找到dao,并返回给bll层;对于直接在BLL层中创建dao相比,耦合度大大的降低依赖性也不是那么重要,对于在后面的维护和复用是不言而喻的;代码下图:
BLL层:说到这个层,其实大家还可以去试一下,多加两个层IBLL,和BLLfactory,其作用和上述的IDAL和factory层大相径庭,作用也是减少BLL和UI层的耦合度和依赖,在原来的三层中,BLL是直接new dal对象调其方法,但在本项目中,是调取Factory层的CreateDAO方法,而且不需要引用dal层,只需引用IDAL,在传过去的类型中我们也只需要把相应的dal的接口idal类型传过去,从而对dal层的依赖减少,代码如下图:
UI层:采用MVC框架搭建,对于数据前后台交互式采用强类型视图,一般是把需要的数据封装到Model中然后再前端操作;