JavaEE应用系统架构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MVC
Control
(Action) 1.访问业务逻辑 2.准备页面数据 3.控制页面跳转
火龙果整理 uml.org.cn
View
(Jsp+Tag) 1.用表单采集数据 2.用Tag显示数据
Model
(ActionForm/VO) 1.表单对象 2.业务数据
大纲
• • • • • • Java EE应用系统架构 表现层 业务逻辑层 数据层 架构分析 课堂练习
Context对象
火龙果整理 uml.org.cn
Context策略: 按照协议无关的方式封装状态,然后在 整个应用系统中使用这种封装后的对象。
例:Struts框架的form很好屏蔽了对 request的依赖。
前端控制器
火龙果整理 uml.org.cn
FrontController: 前端控制器目的是集中地、模块化的进 行请求和响应的管理。
• • • • • • • • • web.xml文件中filter的片段 <filter> <filter-name>filterName</filter-name> <filter-class>com.comtop.struts.action.ValidatorFilter</filter-class> </filter> <filter-mapping> <filter-name>filterName</filter-name> <url-pattern>*.do</url-pattern> </filter-mapping>
Struts框架
ActionForm
Action Delegate Session Facade Application Service DAO CMP/BMP Database
表现层
EJB容器
业务逻辑层
EJB容器
数据层
Ejb3逻辑架构
火龙果整理 uml.org.cn
首次使用 ejb3.0 结合 hibernate 的持久化框架,同时实现了多数据源 实时切换的spring 动态数据源注射 机制。让开发人员的核心工作从代码 实现转移到商业逻辑的实现。
• 从传统意义上来说,业务代表仅仅是一层薄薄的 皮肤,它将所有的请求都转发给业务服务组件。 • 业务代表与会话门面是一一对应的。
业务代表实现策略
• 代理策略
–可以实现验证,数据或引用的缓存等功能
火龙果整理 uml.org.cn
• 适配器策略
–与外部系统交互时,可以在业务代表外面包装 上适配器,提供给外部系统调用
Sun Java EE架构图
火龙果整理 uml.org.cn
大纲
• • • • • • • Java EE应用系统架构 公司现有主要框架介绍 表现层 业务逻辑层 数据层 架构分析 课堂练习
火龙果整理 uml.org.cn
Java EE APP Arch
JSP
火龙果整理 uml.org.cn
A模块 SqlMapConfig.xml B模块 SqlMapConfig.xml
Database
Database
大纲
• • • • • • • Java EE应用系统架构 公司现有主要框架介绍 表现层 业务逻辑层 数据层 架构分析 课堂练习
火龙果整理 uml.org.cn
表现层
火龙果整理 uml.org.cn
• 使用POJO(Plain Old Java Object)实现 业务代表。
会话门面Session Facade
• 会话门面的作用:
火龙果整理 uml.org.cn
–方法->服务,将业务组件和粗粒度业务服务 暴露给远程客户端。 –降低远程客户端和细粒度的业务组件、业务服 务交互造成的网络负担。
Delegate
Delegate
Session bean
Session bean
default Application Service
B模块 Application Service
default Application Service
B模块 Application Service
ibatis
ibatis A模块 SqlMapConfig.xml B模块 SqlMapConfig.xml
传输对象DTO(VO)
火龙果整理 uml.org.cn
• 传输对象的作用: 一个实体往往有多个属性,为了避免在 网络上多次调用get/set方法来获得实体的 属性,提高应用的性能。 • 传输对象需要被序列化
优化前的数据传输
火龙果整理 uml.org.cn
实体和存取器 客户机 网络 网络 网络 网络 实体和存取器 实体和存取器 应用服务器
例:Struts框架的ActionServlet在Struts 中起到了前端控制的功能。
视图助手
火龙果整理 uml.org.cn
视图助手: 目的是为了把视图和相关的处理逻辑分 离开。
例:Struts利用JSP标准标记库(JavaServer Pages Standard Tag Library)[JSTL]技术 实现的一套标签库。
• 表现层在此指用户界面层和页面逻辑层。 • 该层封装了实现客户端表现的所有逻辑, 包括的组件有Filter、JspTag 、 JSP/Servlet等。 • 我们在表示层中采用了基于MVC的Struts框 架。
拦截过滤器
火龙果整理 uml.org.cn
• 过滤器: 是对请求资源和响应资源执行过滤任务 的一种策略
大纲
• • • • • • • Java EE应用系统架构 公司现有主要框架介绍 表现层 业务逻辑层 数据层 架构分析 课堂练习
火龙果整理 uml.org.cn
数据访问对象DAO
火龙果整理 uml.org.cn
• 数据访问对象的作用: –可以按照复杂的条件进行查询。 –可以返回批量的结果集。 –可以访问多种数据源,包括数据库系统或者文件。 • 通过Session Bean调用的DAO 存活于EJB容器内, 此时可以进行事务管理 • 业务代表直接调用的DAO在EJB容器外,不能进行事 务管理 • DAO一般不进行增删改,只进行查询操作
• UserEntityPK objUserEntityPK = new UserEntityPK (id); • //得到实体对象 • UserEntity objUserEntity = objUserEntityHome.findByPrimaryKey(objUserEntityPK );
• objUserEntity.setName(“张三”); • objUserEntity.setPassword(“123”);
• 通常使用POJO实现应用服务,特殊情况下可使用 Session Bean 来实现。
业务对象模型
• 业务对象模型的作用: 把业务数据和业务逻辑分离出来。
火龙果整理 uml.org.cn
• 第一种策略是使用POJO,并选择一种合适的 持久化技术,比如Hibernate 。 • 第二种策略是使用entity bean。
大纲
• • • • • • • Java EE应用系统架构 公司现有主要框架介绍 表现层 业务逻辑层 数据层 架构分析 课堂练习
火龙果整理 uml.org.cn
架构与框架的区别
火龙果整理 uml.org.cn
• 架构architecture • 系统在其所处环境中的最高层次的划分 [IEEE]。 软件架构 = {组件元素,元素互助合作之模式,基础 要求与限制} 。 架构设计就是将各组件元素以某些理想的合作 模式组织起来﹐以达成系统的基本功能和限制。 • 框架framework • 框架指的是一种机制,这种机制负责控制各协作 对象之间的交互,比如Apache Struts框架, Microsoft MFC框架。 框架和类库的差别:类库中的基类是被用户的类 调用的,而框架中正相反,用户的类会被框架调用。
• 使用Session Bean实现会话门面。
–会话门面中包含的业务逻辑应很少或一点儿也 不包含,如果有业务逻辑,应该放在应用服务 里。
应用服务Application Service
• 应用服务的作用:
火龙果整理 uml.org.cn
–把多个业务层组件和服务之间的业务逻辑集中起来, 聚合特定功能,提供一个统一的服务层。 –减少会话门面中的业务逻辑。 –让某种业务逻辑调度多个业务对象或业务服务。 –在现存的业务层组件和服务之上提供一种粗粒度的 服务API。 –需要在业务对象之外封装专门针对特定用例的逻辑。
优化后的数据传输
火龙果整理 uml.org.cn
实体 客户机 网络 网络
数据存取控制
控制器
实体 实体
网络 网络
数据库表 数据库表 数据库表
应用服务器
VO
业务代来自百度文库/会话门面
EJB容器
优化后的数据传输
• 代码片段
火龙果整理 uml.org.cn
• UserEntityHome objUserEntityHome= (UserEntityHome )Toolkit.getInstance() .getRemoteHome(“userEntityJNDIName“, UserEntityHome.class); • UserEntityPK objUserEntityPK = new UserEntityPK (id); • //得到实体对象 • UserEntity objUserEntity = objUserEntityHome.findByPrimaryKey(objUserEntityPK ); • • • • UserVO objUserVO= objUserEntity .getUserVO(); objUserVO.setName(“张三”); objUserVO.setPassword(“123”); objUserEntity.setUserVO(objUserVO);
数据库表 数据库表 数据库表
优化前的数据传输
• 代码片段
火龙果整理 uml.org.cn
• UserEntityHome objUserEntityHome= (UserEntityHome )Toolkit.getInstance() .getRemoteHome(“userEntityJNDIName“, UserEntityHome.class);
SimpleORM架构
A模块jsp SimpleORM组件
A模块 ActionForm A模块 Action SimpleORM组件 B模块 Action
火龙果整理 uml.org.cn
B模块jsp
A模块jsp
B模块jsp
B模块 ActionForm
dwr 当需要扩展 默认服务类
当需要扩展 默认服务类
火龙果整理 uml.org.cn
Java EE应用系统架构
郑重
Java EE
火龙果整理 uml.org.cn
Java EE是什么?
Java EE • Java Platform, Enterprise Edition
火龙果整理 uml.org.cn
• Java EE是一种利用Java平台来简化企业解决 方案的开发、部署和管理相关的复杂问题 的体系结构。 • Java EE以Java SE为基础,为企业提供了完整 的、稳定的、安全的、快速的Java平台。 • Java EE并不是一个技术而是一个标准。
火龙果整理 uml.org.cn
业务代表Delegate
• 业务代表的四个作用:
火龙果整理 uml.org.cn
–避免客户端直接与业务服务接口交互,提高灵活性。 –提高网络传输性能,通过缓存数据,避免与细粒度的 服务多次的往返交互。 –避免客户端代码中包含底层架构代码,包括命名服务 JNDI,网络连接故障处理等。 –将系统级异常转换成应用级异常,对用户更加友好。
大纲
• • • • • • • Java EE应用系统架构 公司现有主要框架介绍 表现层 业务逻辑层 数据层 架构分析 课堂练习
火龙果整理 uml.org.cn
类图
1 0..*
火龙果整理 uml.org.cn
BaseApplicationService
#logger
<<POJO>> ApplicationService +BusinessOperation() 1 1 1 1 0..* <<EJBEntityBean>> EntityBean +getVO() +setVO()