J2EE Architecture(17)

简介: J2EE Architecture(17) 1、MVC架构 MVC(Model-View—Control,模型-视图-控制器)架构,是最早出现的一种架构,用于实现传统架构,如客户机/服务器、分布和Internet架构。

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)

 

目录
相关文章
|
存储 算法 前端开发
【软件设计师-从小白到大牛】上午题基础篇:第五章 结构化开发方法
在结构化分析中,用数据流图描述 数据在系统中如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模。 数据字典有以下4类条目:数据流、数据项、数据存储和基本加工。
475 0
|
传感器 人工智能 监控
无人驾驶拖拉机
无人驾驶拖拉机
837 1
|
Cloud Native NoSQL 关系型数据库
数据传输DTS校验问题之校验报错如何解决
数据传输服务(DTS)是一项专注于数据迁移和同步的云服务,在使用过程中可能遇到多种问题,本合集精选常见的DTS数据传输问题及其答疑解惑,以助用户顺利实现数据流转。
|
缓存
npm修改全局包安装路径
npm修改全局包安装路径
236 0
Vue3 小兔鲜:Layout-静态模版结构搭建
Vue3 小兔鲜:Layout-静态模版结构搭建
245 0
|
存储 SQL 机器学习/深度学习
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
MySQL高级篇——索引、视图、存储过程和函数、触发器的相关概念及操作(上)
|
SQL 关系型数据库 数据库
17. Python 数据库操作之MySQL和SQLite实例
17. Python 数据库操作之MySQL和SQLite实例
484 2
|
存储 分布式计算 Hadoop
Hadoop节点名称节点(NameNode)
【5月更文挑战第17天】
831 3
|
数据挖掘
R语言中的混合效应模型
【4月更文挑战第27天】本文介绍了R语言中混合效应模型(MEMs)的理论与应用,包括固定效应和随机效应的概念,以及使用`nlme`、`lmerTest`包构建线性、非线性和广义线性混合效应模型。通过学生考试成绩的例子展示了如何分析复杂数据结构。此外,讨论了模型解释、验证方法,如AIC和残差图。最后提到了R语言支持的高级主题,如多层次模型和潜在增长曲线模型,强调了MEMs在处理相关性数据中的重要性及其在R语言中的广阔应用前景。
303 0
|
消息中间件 监控 中间件
探索微服务架构下的系统弹性设计
【4月更文挑战第26天】 在当今快速迭代和持续部署的软件发展环境中,系统的弹性设计成为维护高可用性和稳定性的关键因素。本文将深入探讨在微服务架构下如何实现系统弹性,包括识别潜在的故障点、设计容错机制、以及通过实践案例分析提升系统整体的韧性。我们将讨论一系列策略,如服务降级、超时管理、重试策略、断路器模式等,旨在为开发者提供一套实用的系统弹性设计方案。