5层架构

所谓四层架构的分法,就是想把软件设计师工作量降下来,减少重复性的代码,提高开发速度,是软件有相当好的可维护、易扩展,这种四层架构对很多人开发同软件来说,可以有个清晰的思路。我把系统分成表示层(UI)、业务逻辑层(Bussiness/Service)、数据访问层(DataAccess/Dao)、数据实体层(Domain)。如果你还考虑到数据库设计的话,就是五层架构。

1、UI

关注request/response动作

解决一个模型的UI显示

处理一些基本的格式逻辑以及非业务逻辑相关的验证逻辑

处理从其他抛出的异常;

2、DAO

用来与持久化的数据库,如关系数据库交互

提供一种查询语言

可能提供ORMapping的机制

可以使用JDBC,hibernate,Ibtis,JDO,Entity Beans等;

3、Domain

包含一系列可以贯通上边所说两层的业务对象

包含其他域对象之间有交互关系

可能又丰富的业务逻辑

就是把实际数据库里的映射到内存中,也称为OMapping(能通过ORM获取相应的对象)

域对象之间可能存在依赖关系

4、Service

将业务逻辑的业务暴露给表现层

管理容器级别的服务,例如事务,安全,数据访问逻辑

这篇文章其实是去年我给别人讲Web分层结构时做的一个ppt,只是个人的观点和想法。

1.Model1和Model2

首先,Model1是指JSP+JavaBean。Model1比较适合于一些较小项目,但是,对于现在的情况而言,Model1已经被弃用了。结构如下:


至于Model2是指JSP+Servlet+JavaBean。Model2 出现以后,人们于实际应用过程中发现,其中的 jsp 关注的是页面显示, Servlet关注的是流程控制, 而 JavaBean 关注的是业务处理。这与传统的 MVC 非常类似, 传统的 MVC包括了三个方面的内容,模型,视图,控制器。因此,人们开始认为, Model2 是基于 MVC (下面也会讲的MVC模型)的。Model2结构如下:


2.传统MVC

传统的MVC包括三个方面:模型、视图、控制器。模型,关注数据处理;视图,关注数据显示和报表处理;控制器,负责协调模型和视图。然后我们看下传统MVC模型:


乍一看Model2和MVC是一样的,但二者的数据传输的本质是存在区别的,从二者结构图可见一斑。

3.三层架构

微软推荐的分层架构一般为三层:表示层、业务逻辑层(或领域层)、数据访问层。

  1. 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得;
  2. 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理;
  3. 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

其结构如下:


三层架构与MVC的区别:在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。 

4.四层架构

随着需求的不但增加,三层架构也已经难以担当大任。于是,有人提出四层分层架构。其中,四层架构有两种形式。第一种形式是:


该架构比三层架构只多了一个系统服务层,而该层正是供系统各层访问的服务型代码。

在第二种形式中保存了控制层,即web层,如:


5.五层架构

对于现今日益庞大的系统而言,以上的架构实现起来略显吃力,所以个人觉得Web应用应该采用五层架构。五层架构包括:用户界面层、控制层、业务逻辑层、数据持久层、系统服务层。其实,准确地说,我觉得用五层结构描述的更清晰一些,因为本质上并没有比上述结构有多么大的差别,只是把别人提到的分层结构给进一步划分了一下而已。其中每一层的职责如下:

  1. 用户界面层:即网页,用户能实实在在看得到的,能进行操作的界面;
  2. 控制层:控制用户界面层和业务逻辑层进行数据交互,对于Struts2而言就是Action;
  3. 业务逻辑层:针对具体问题的操作,对业务逻辑的处理;
  4. 数据持久层:控制事务,直接操作数据库,对数据进行CRUD操作(即数据的增、删、改、查),即Hibernate或MyBatis负责与数据库的通信;
  5. 系统服务层:即提供公共的服务性功能,供各个操作层使用。
其结构如图:


虽然说现在有很多Web框架,但是只不过是以前我们做的工作进行了更好的封装。就像《轻量级JavaEE企业应用实战》中Spring那部分中,作者说的那样,Spring是把之前的程序员写的工厂方法做了扩展、改进,从而进行了封装,并且使之更加灵活,易用。同时,从这些框架中,我们也可以看出Web开发中的层次结构。

参考: http://www.voidcn.com/blog/u010376788/article/p-4670333.html 

http://blog.csdn.net/wanghuan203/article/details/7100406


J2EE使用多层的分布式应用模型,应用逻辑按功能划分为组件,各个应用组件根据他们所在的层分布在不同的机器上。事实上,sun设计J2EE的初衷正是为了解决两层模式(client/server)的弊端,在传统模式中,客户端担当了过多的角色而显得臃肿,在这种模式中,第一次部署的时候比较容易,但难于升级或改进,可伸展性也不理想,而且经常基于某种专有的协议�D�D通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层,以下是 J2EE 典型的四层结构:

◆运行在客户端机器上的客户层组件

◆运行在J2EE服务器上的Web层组件

◆运行在J2EE服务器上的业务逻辑层组件

◆运行在EIS服务器上的企业信息系统(Enterprise information system)层软件

5层架构_第1张图片

 

J2EE应用程序组件

J2EE应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元,它们通过相关的类和文件组装成J2EE应用程序,并与其他组件交互。J2EE说明书中定义了以下的J2EE组件:

◆应用客户端程序和applets是客户层组件.

◆Java Servlet和JavaServer Pages(JSP)是web层组件.

◆Enterprise JavaBeans(EJB)是业务层组件.

客户层组件

J2EE应用程序可以是基于web方式的,也可以是基于传统方式的.

web 层组件

J2EE web层组件可以是JSP 页面或Servlets.按照J2EE规范,静态的HTML页面和Applets不算是web层组件。

正如下图所示的客户层那样,web层可能包含某些 JavaBean 对象来处理用户输入,并把输入发送给运行在业务层上的enterprise bean 来进行处理。

5层架构_第2张图片

业务层组件

业务层代码的逻辑用来满足银行,零售,金融等特殊商务领域的需要,由运行在业务层上的enterprise bean 进行处理. 下图表明了一个enterprise bean 是如何从客户端程序接收数据,进行处理(如果必要的话), 并发送到EIS 层储存的,这个过程也可以逆向进行。

有三种企业级的bean: 会话(session) beans, 实体(entity) beans, 和消息驱动(message-driven) beans. 会话bean 表示与客户端程序的临时交互. 当客户端程序执行完后, 会话bean 和相关数据就会消失. 相反, 实体bean 表示数据库的表中一行永久的记录. 当客户端程序中止或服务器关闭时, 就会有潜在的服务保证实体bean 的数据得以保存.消息驱动 bean 结合了会话bean 和 JMS的消息监听器的特性, 允许一个业务层组件异步接收JMS 消息.

5层架构_第3张图片

企业信息系统层

企业信息系统层处理企业信息系统软件包括企业基础建设系统例如企业资源计划 (ERP), 大型机事务处理, 数据库系统,和其它的遗留信息系统. 例如,J2EE 应用组件可能为了数据库连接需要访问企业信息系统。


参考: http://www.voidcn.com/blog/u013944979/article/p-3111186.html 

http://www.voidcn.com/blog/u013944979/article/p-3111186.html

 http://developer.51cto.com/art/200906/127990.htm


你可能感兴趣的:(5层架构)