这篇文章其实是去年我给别人讲Web分层结构时做的一个ppt,只是个人的观点和想法。
首先,Model1是指JSP+JavaBean。Model1比较适合于一些较小项目,但是,对于现在的情况而言,Model1已经被弃用了。结构如下:
至于Model2是指JSP+Servlet+JavaBean。Model2 出现以后,人们于实际应用过程中发现,其中的 jsp 关注的是页面显示, Servlet关注的是流程控制, 而 JavaBean 关注的是业务处理。这与传统的 MVC 非常类似, 传统的 MVC包括了三个方面的内容,模型,视图,控制器。因此,人们开始认为, Model2 是基于 MVC (下面也会讲的MVC模型)的。Model2结构如下:
传统的MVC包括三个方面:模型、视图、控制器。模型,关注数据处理;视图,关注数据显示和报表处理;控制器,负责协调模型和视图。然后我们看下传统MVC模型:
乍一看Model2和MVC是一样的,但二者的数据传输的本质是存在区别的,从二者结构图可见一斑。
微软推荐的分层架构一般为三层:表示层、业务逻辑层(或领域层)、数据访问层。
其结构如下:
三层架构与MVC的区别:在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。随着需求的不但增加,三层架构也已经难以担当大任。于是,有人提出四层分层架构。其中,四层架构有两种形式。第一种形式是:
该架构比三层架构只多了一个系统服务层,而该层正是供系统各层访问的服务型代码。
在第二种形式中保存了控制层,即web层,如:
对于现今日益庞大的系统而言,以上的架构实现起来略显吃力,所以个人觉得Web应用应该采用五层架构。五层架构包括:用户界面层、控制层、业务逻辑层、数据持久层、系统服务层。其实,准确地说,我觉得用五层结构描述的更清晰一些,因为本质上并没有比上述结构有多么大的差别,只是把别人提到的分层结构给进一步划分了一下而已。其中每一层的职责如下:
虽然说现在有很多Web框架,但是只不过是以前我们做的工作进行了更好的封装。就像《轻量级JavaEE企业应用实战》中Spring那部分中,作者说的那样,Spring是把之前的程序员写的工厂方法做了扩展、改进,从而进行了封装,并且使之更加灵活,易用。同时,从这些框架中,我们也可以看出Web开发中的层次结构。