三层结构(DAL,BLL,UI)---学习整理

来源:互联网 发布:法式风情 知乎 编辑:程序博客网 时间:2024/05/16 06:32

数据访问层DAL(data access layer)

这一层主要就是完成把数据库的数据跟实体映射起来,然后完成数据的增、删、改、查操作

一般包括以下几部分

Model   定义数据模型,数据实体

 

DBUitil 对数据库中数据的具体操作

 

DAL数据和实体对象映射

———————————————————————————————————————

业务逻辑层BLL(business logical layer)

这一层就是针对相应的对象,进行一些具体的操作,实现相应的功能。“业务逻辑层在体系架构中的位置很关键,它处于数据访问层与表示层中间”,启着承上启下的关键作用。

 

这一层根据不同的需求,划分成不同的部分来完成不同的功能

———————————————————————————————————————

表示层(UI/webUI)

提供给用户,用于数据显示,响应用户操作!

具体实现,了解不多,以后再详细学习。

———————————————————————————————————————

 

最后,这三层结构是从下向上一层一层的调,理想的分层式架构,应该是一个支持可抽取、可替换的“抽屉”式架构。

 

优缺点

优点:

1、开发人员可以只关注整个结构中的其中某一层;

2、可以很容易的用新的实现来替换原有层次的实现;

3、可以降低层与层之间的依赖;

4、有利于标准化;

5、利于各层逻辑的复用。

缺点:

1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

 

规则

三层结构的程序不是说把项目分成DAL, BLL, WebUI三个模块就叫三层了, 下面几个问题在你的项目里面:

1. UILayer里面只有少量(或者没有)的SQL语句或者存储过程调用, 并且这些语句保证不会修改数据?

2. 如果把UILayer拿掉, 你的项目还能在Interface/API的层次上提供所有功能吗?

3. 你的DAL可以移植到其他类似环境的项目吗?

4. 三个模块, 可以分别运行于不同的服务器吗?

如果不是所有答案都为YES, 那么你的项目还不能算是严格意义上的三层程序. 三层程序有一些需要约定遵守的规则:

1. 最关键的, UI层只能作为一个外壳, 不能包含任何BizLogic的处理过程

2. 设计时应该从BLL出发, 而不是UI出发. BLL层在API上应该实现所有BizLogic, 以面向对象的方式

3. 不管数据层是一个简单的SqlHelper也好, 还是带有Mapping过的Classes也好, 应该在一定的抽象程度上做到系统无关

4. 不管使用COM+(Enterprise Service), 还是Remoting, 还是WebService之类的远程对象技术, 不管部署的时候是不是真的分别部署到不同的服务器上, 最起码在设计的时候要做这样的考虑, 更远的, 还得考虑多台服务器通过负载均衡作集群

所以考虑一个项目是不是应该应用三层/多层设计时, 先得考虑下是不是真的需要? 实际上大部分程序就开个WebApplication就足够了, 完全没必要作的这么复杂. 而多层结构, 是用于解决真正复杂的项目需求的。

 

与MVC的区别

MVC(模型Model-视图View-控制器Controller)是一种设计模式,我们可以用它来创建在域对象和UI表示层对象之间的区分。
同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。

在三层架构中没有定义Controler的概念。这是我认为最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是已实体类构成的,而MVC里,则是由业务逻辑与访问数据组成的。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Luckeryin/archive/2008/12/06/3458750.aspx

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bigbighello/archive/2009/09/11/4542053.aspx

原创粉丝点击