J2EE Architecture(17)
1、MVC架构
MVC(Model-View—Control,模型-视图-控制器)架构,是最早出现的一种架构,用于实现传统架构,如客户机/服务器、分布和Internet架构。这个架构分开了表示逻辑、业务逻辑和数据。
1)MVC模式的“模型”实质上表示数据或信息,以及用来访问和修改数据的业务逻辑。
2)每当数据发生更改时,模型将通知“视图”,这称为“更改通知”,是一个基于事件的通信,允许视图查询模型的状态更改,即“状态查询”。更改还允许“控制器”通过应用程序功能封装访问信息,这称为“状态更改”。
3)“视图”用于显示模型的数据。视图与控制器通信,以发送“用户意图”,这是一个基于事件的通信,当用户单击按钮或按下回车键时,将发生通信。
4)“控制器”用于提供应用程序行为。控制器在理解用户意图后执行操作。控制器将:
(1)选择不同数据视图;
(2)在模型中执行操作,以更改数据。
2、Model 1 架构
Servlet、Servlet Filter、HTML和JSP是表示部署的组件。利用这些组件实现的MVC架构称为“MVC Model 1”。
Servlet、JSP组件担当了“模型”、“视图”、“控制器”角色,并用适当方法交付Web应用程序。其中,JSP提供视图,Servlet提供模型和控制器;在更小的Web应用程序中,由于所需组件很少,JSP组件可独当三个角色。
由于业务需求经常出现更改,MVC Model 1 缺少足够的灵活性。
在引入新功能或更改现有功能时,将需要引入新的JSP组件,或修改现有的JSP组件,并相应更改结构。在经常更改架构时,会导致应用程序脆弱不堪,常出现中断。
中断的起因是:JSP的“控制器”和“模型”功能十分有限,Servlet也只是勉强提供“模型”功能。还有一个问题:JSP将截获客户端发出的初始调用,这是一种不可靠的做法。
3、Model 2 架构
表示层包含Servlet、Servlet Filter、HTML和JSP,而业务层包含业务组件,主要是企业Bean。在MVC Model 2 架构中,业务层组件担当“模型”角色。
在这种架构中,Servlet和JSP组件分别担当“控制器”和“视图”角色,并恰如其分的交付Web应用程序。
Model 2 架构有效地划分了考虑事项,能得心应手地支持大型企业应用程序。
4、Web层最佳实践
表示出的组件需要针对各个请求执行大量任务,如身份验证、授权、登陆和过滤等任务:
1)必须合理评估请求,并转发给业务层组件;
2)还要评估业务层组件的响应,对响应做适当的格式处理,再将响应转发给客户端。
表示层问题的一些常见原因如下:
1)“视图”组件视图执行“控制器”的活动;
2)“控制器”组件试图执行很多与“视图”组件相关的活动,成了控制与视图逻辑的大杂烩;
3)将业务逻辑和数据向客户层公开;
4)将表示逻辑和数据向业务层公开;
5)缺乏协调有序的控制活动。
5、控制器组件
Servlet最适于执行控制活动。应将控制器组件中的前端组件作为到达Web应用程序所有请求的“单个输入点”。
前端组件接下来应合理转换HTTP请求,并将请求发送给表示组件,或其它控制器组件。
单点输入组件能确保安全,维护应用程序状态,并确保使用表示组件时的统一表示效果。
6、表示组件
JSP组件最适于执行表示任务,如果响应内容类型被设置为HTML或XML,表现得更为明显。
这些组件应采用模块化方式,并支持重用,因为Web应用程序或企业应用程序的各个部分可能查找JSP的表示方面。
这些表示组件应当有助于显示统一的企业应用程序外观。
7、Web层的设计模式
GoF认为,模式是用于指定上下文,用来解决问题的方案。
企业应用程序的一些重要模式如下:
架构模式——适用于企业解决方案的架构级别
设计模式——适用于企业解决方案的设计级别
部署模式——适用于企业解决方案部署时的情况
架构级别的抽象由设计级别的大量低级组件构成。
设计模式用来解决设计企业应用程序中反复出现的问题,是“常用”的可重复解决方案。与架构模式不同,设计模式将识别参与的类、实例,以及它们的角色、职责和策略等。
根据GoF给出的原理,可将普通软件工程中的“设计模式”分为以下3种类型:
1)“创建”设计模式
有助于创建不同上下文环境需要的对象和组件实例。下面是5种流行的创建模式:
(1)抽象工厂(Abstract Factory)
(2)工厂方法(Factory Method)
(3)构建者(Builder)
(4)原型(Prototype)
(5)单元素(Singleton)
2)“结构”设计模式
涉及到如何将类和对象组合为规模更大的结构。下面是7种流行的创建模式:
(1)适配器(Adapter)
(2)桥(Bridge)
(3)复合(Composite)
(4)装饰者(Decorator)
(5)外观(Facade)
(6)次轻量级(Flyweight)
(7)代理(Proxy)
3)“行为”设计模式
涉及到不同交互对象之间的通信。行为模式描述了在运行时较难理解的通信流。下面是11种流行的创建模式:
(1)命令(Command)
(2)职责链(Chain of Responsibilities)
(3)截获器(Interpreter)
(4)迭代器(Iterator)
(5)纪念品(Memento)
(6)中介(Mediator)
(7)观察者(Observer)
(8)状态(State)
(9)策略(Strategy)
(10)模板方法(Template method)
(11)访问者(Visitor)