本文摘自:asp.net七层架构浅谈
所谓的多层架构其实更三层原理是一样的,只是随着项目的需要分离多个层出来,层次不是越多越好的,而是视乎项目的实际需要,这一点要明确;常用的3层结构就是:数据访问层、业务逻辑层、UI层;七层架构也是这个原理,分别为:
Model实体层,DBUtility数据访问抽象类,IDAL数据访问接口层,SQLServerDAL数据访问层,DALFactory数据访问工厂类,BLL业务逻辑层,UI界面层。
1、WEB=表示层
2、BLL=业务逻辑层
3、IDAL=数据访问层接口定义
4、Model=业务实体
5、DALFactory=数据层的抽象工厂(创建反射)
6、SQLServerDAL=SQLServer数据访问层 / OracleDAL=Oracle数据访问层
7、DBUtility 数据库访问组件基础类
一、项目名称及描述:
1、WEB=表示层
2、BLL=业务逻辑层
3、IDAL=数据访问层接口定义
4、Model=业务实体
5、DALFactory=数据层的抽象工厂(创建反射)
6、SQLServerDAL=SQLServer数据访问层 / OracleDAL=Oracle数据访问层
7、DBUtility 数据库访问组件基础类
实现步骤为:Model—IDAL—SQLServerDAL—DALFactory—BLL—WEB
二、项目引用关系
1、Web 引用 BLL。
2、BLL 引用 IDAL,Model,使用DALFactory创建实例。
3、IDAL 引用 Model。
4、Model 无引用。
5、DALFactory 引用IDAL,通过读取web.config里设置的程序集,加载类的实例,返回给BLL使用。
6、SQLServerDAL 引用 Model和IDAL,被DALFactory加载的程序集,实现接口里的方法。
三、实现步骤
1、创建Model,实现业务实体。
2、创建IDAL,实现接口。
3、创建SQLServerDAL,实现接口里的方法。
4、增加web.config里的配置信息,为SQLServerDAL的程序集。
5、创建DALFactory,返回程序集的指定类的实例。
6、创建BLL,调用DALFactory,得到程序集指定类的实例,完成数据操作方法。
7、创建WEB,调用BLL里的数据操作方法。
注意:
1、web.config里的程序集名称必须与SQLServerDAL里的输出程序集名称一致。
2、DALFactory里只需要一个DataAccess类,可以完成创建所有的程序集实例。
3、项目创建后,注意修改各项目的默认命名空间和程序集名称。
4、注意修改解决方案里的项目依赖。
5、注意在解决方案里增加各项目引用。
下段摘自论坛.NET源码论坛 中用户51Aspx的精彩评论:
三层架构或者N层架构确切的应该称做多层架构,但是一般不管是几层大家都通称为“三层” 就像我们生活中的概数“两天”、“几天”一样。我也简单的说一下,然后举个例子,希望你能懂。
三层,一般包含:
数据访问层:也叫 DataAccess层、DAL(DataAccess Layer层),这一层的工作就是与数据库或其它文件打交道。
业务逻辑层:也叫中间层,Bussiness Logical layer,也可说是Bussiness Rule(业务规则),这一层是处理业务逻辑的。
外观层:不记得英文缩写了,P开头的,这一层主要是与用户打交道,也就是界面。比如是Web,也可能是WinForm。
打个比方来说,你要做一个简单的功能:
往数据库里插入一条学生记录 外观层:只是处理你的界面应该怎么展示,比如控件的布局,还有一个主要的就是把界面上控件内的数据读取下来。这一层主要做的事情,就是从外部获取数据,当然还有一些简单的判断,比如判断那些数据是不能为空的,必须输入。
然后调用中间层的一个访问,通过参数的形式转过去。
中间层的接到从外观屋传来的数据,这里就做业务辑逻的判断。
比如判断只有20岁以上的人才能保存在数据库等,反正这里是关心业务的,通过业务逻辑层的数据,就调用数据访问层的方法 数据访问层只做与数据库打交道的工作(也可以是与文件打交道,毕竟保存数据的地方不只有数据库)。
数据库访问层不会对业务逻辑做过多的判断,他的任务就是为了把中间层传过来的数据如果保存在数据库中。
三层框架只是一种思想,就是任务职责的分解。
简单的说,你可以用三个函数(function)来实现, 比如fun1的任务是把界面上的数据读取两个数字中,然后把这两个数据传给fun2,他不管fun2拿这两个数据来干什么的。 fun2的任务就是把这两个数字相减或相加,fun1和fun3是不管的(这一层是的操作是根据你的具体业务来)。 第三个fun3的任务就是访问数据库,把fun2操作运算过的一个数字保存到数据库中 再大一点,你可以用三个类来分开实现 再大一点来说,你可以建三个不同的项目来实现(企业级架构就是这样的) 。
好了,说了这么多,不知你有没有理解。你可以参考一下.NET Pet shop 4.0吧,它是基于三层结构的B/S程序,网上有很多相关的介绍。 三层架构只是最简单的分层思想,其它的一些N层构架也是从这个基础上延伸的,所以你一定要理解好,才能扫平以后的学习障碍。