中间件体系结构和设计模式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
– 原子性 Atomicity – 一致性 Consistency – 独立性 Isolated – 持久性 Durable
复合事务处理模式
• 描述
– 人们通常希望以最小的代价设计和实现正确的 事务处理,与复杂的事务处理相比,简单的事 务处理易于实现,而且也容易保证正确性。通 过较为简单的ACID事务处理可以设计和实现 复杂的事务处理
运行时的RMI-IIOP对象
客户
AccountHomeR MI对象
容器
委派
AccountRMI对 象
AccountBea n类实例
容器在委派时插入的服务: 事务处理 安全 多线程 持久性
失败恢复 负荷分担 集群
分布式对象协议
• 描述
– 容器实现了用于企业bean与它们的客户之间 的通信的分布式对象协议
• 益处
– 容器能够达到一个高数量用户要求的可伸缩性 ,而bean开发者的负担达到极小
资源共享
• 描述
– 容器能够高效地重用资源,如数据库的连接, 以达到更高的性能
• 益处
– Bean开发者不必开发复杂的共享逻辑
数据存取
• 描述
– 对于由容器管理持久性的实体bean,容器生成 数据存取逻辑
• 益处
• JMX 1.2
• J2EE Management API 1.0
• J2EE Deployment API 1.1
J2EE 1.4 与 Web Services
“The Java 2 Platform, Enterprise Edition version 1.4 is the most complete Web services platform ever.”
– 在部署时调整一个企业bean以便和现有的数 据库一起工作
系统管理支持
• 描述
– 容器提供了系统管理工具来管理已经部署好的 应用
• 益处
– 企业bean在运行时可管理。bean开发者不必 开发管理支持作为应用的一部分
失败恢复
• 描述
– 容器能够提供一个重启一个失败的事务处理或 应用的原子性
• 益处
• 益处
– Bean开发者不必实现书务处理在一个分布式 系统中的复杂管理
安全
• 描述
– 容器在委派一个客户调用之前检查客户是否授 权来调用一个业务方法
• 益处
– 安全策略不必硬编码到企业bean中。它们能 够由部署者和系统管理员来设置以满足企业的 需要
状态管理
• 描述
– 容器在需要释放资源时可以去活一个企业 bean对象。以后,当这个对象被一个客户调 用时,容器激活这个对象
组件配置器
• 描述
– 允许应用程序在不必修改、重新编印、静态地 重新链接应用程序的情况下,在运行时链接和 解链它的组件实现。组件配置器进一步支持在 不必关闭和重启运行的进程的情况下,把组件 重新配置到不同的应用程序进程。
截取器
• 描述
– 允许透明地把服务加到框架中,并且某些事件 发生时能自动地触发服务
移动代理模式
• 描述
– 对象需要访问大量的远程数据,为了保存网络 带宽,数据不放在对象上,而是将对象移动到 数据上
隔离带模式
• 描述
– 也称DMZ – 黑客将会威胁到公共可访问服务器的安全。人
们当然不希望黑客访问非公共的以及还有敏感 信息的服务器。可以将在公共Internet上访问 的服务器放到公共可访问的LAN上,它位于防 火墙和公共Internet之间
– Bean开发者不必将失败恢复或重启逻辑编码 到应用中
高可用性
• 描述
– 容器可以提供成熟的高可用性策略对客户屏蔽 各种服务器错误
• 益处
– 因为高可用性支持对于bean开发者是透明的 ,因此任何ejb应用能够制成高可用的,只要 将它们部署在一个实现了高可用性支持的容器 中
群集
• 描述
– 一个高端容器可以分布在一个群集服务的多个 节点上
两阶段提交模式
• 描述
– 如果事务处理有多个数据库管理器发布的简单 事务处理组成,并且想让它们全部成功完成或 者全部异常终止并使所有对象恢复到事务处理 开始前的状态,那么可以使用一个负责调整这 些事务处理的对象来实现
审计跟踪模式
• 描述
– 用户需要验证正在处理的事务处理的正确性和 公正性,这可以通过维护适用于一个或一系列 对象的事务处理的历史记录来实现。记录应该 含有足够的信息以确定事务处理如何影响对象 使之达到当前的状态
Web 容器
wenku.baidu.com
EJB
EJB
EJB 容器
数据库
J2EE提供的服务
• 容器为部署在其中的企业bean提供下列服务
– 分布式对象协议 – 线程管理与同步 – 进程管理 – 事务处理 – 安全 – 状态管理 – 资源共享 – 数据存取 – 系统管理支持 – 失败恢复 – 高可用性 – 集群 – 负荷分担 – 生命周期管理 – 事件服务 –…
J2EE 1.2 1999年12月
J2EE 1.4 2003年11月
1998 1999 2000 2001 2002 2003
EJB 1.0 1998年3月
JSP 1.0 1999年11月
J2EE 1.3 2001年9月
J2EE 应用服务器
客户端
浏览器
应用程序 客户端
应用程序 客户端 容器
J2EE 服务器 Servlet JSP
服务访问与配置模式
• 包装器外观(Wrapper Façade) • 组件配置器(Component Configurator) • 截取器(Interceptor) • 扩展接口(Extension Interface)
包装器外观
• 描述
– 包装器外观设计模式把现有的非面向对象的 API所提供的函数和数据封装在更加简洁、健 壮的、可移植的、可维护的和内聚的面向对象 的类接口中
对象标志符模式
• 描述
– 对于在多个对象中出现的对象需要唯一的标识 ,将一个全局惟一的标志符分配给该对象,这 样它在程序或数据库间共享时可以由惟一的身 份
注册模式
• 描述
– 对象需要与其他对象联系,但是如果只知道其 他对象的名字或其提供的服务名,如何与它联 系呢?可以提供一种服务来获取对象、服务或 作用,并返回远程代理,远程代理封装了如何 与命名对象联系的内容
进程对等模式
• 描述
– 为保持进程或软件组件的高可用性,用户希望 在其失效后能够自动重启。将高可用性的软件 组件成对组织,这样当一个失效后,另一个可 以重启它
分布式计算模式
• 对象标志符模式 • 注册模式 • 保护代理模式 • 发布-订阅模式 • 重发模式 • 邮箱模式 • 重量级/轻量级模式 • HeartBeat模式 • 链接多路复用模式
发布-订阅模式
• 描述
– 有时需要为一个或多个对象及时传递消息,要 将消息传递给订阅该消息的接收者对象,可分 别把各个消息传递给各个接收者。为了确保传 送可靠,可在传送失败时重发直到成功为止
重发模式
• 描述
– 需要确保对象可靠地将消息发送给远程对象。 如果不成功,再来一次,当对象发送失败后, 可以再试一次,直到发送成功为止
J2EE 1.4 规范
246 pages
J2EE 1.4 技术
• Servlets 2.4 • JSP 2.0 • EJB 2.1 • JMS 1.1 • JTA 1.0.1B • JTS 1.0
• JCA 1.5 • JAXR 1.0 • JAX-RPC 1.1 • SAAJ 1.2 • JACC 1.0 • JavaMail 1.2
中间件软件体系结构
• 中间件体系结构的发展
– 集中式大型机模式 – 文件共享模式 – 客户/服务器模式 – 传统的三层结构模式 – 早期的基于Web模式 – J2EE模式 – .NET模式
中间件软件体系结构
• J2EE/.NET体系结构介绍
J2EE平台的演进
Servlets 2.1 1998年11月
中间件体系结构与设计模式
软件模式专家 J2EE专家
罗勇文
luoyw@omguml.com
开场白
• 自我介绍
议题
• 中间件软件体系结构[70分钟] – J2EE/.NET体系结构介绍 – J2EE/.NET实例分析
• 休息10分钟 • 企业设计模式[90分钟]
– 服务访问与配置模式 – 事务处理模式 – 分布式体系结构模式 – 分布式计算模式 – 并发模式 – 时间模式 – 数据库模式 • 讨论[10分钟]
• 益处
– 因为群集对于bean开发者是透明的,因此所 有的ejb应用能够运行在一个群集系统上
企业设计模式
– 服务访问与配置模式[10分钟] – 事务处理模式[10分钟] – 分布式体系结构模式[10分钟] – 分布式计算模式[10分钟] – 并发模式[10分钟] – 时间模式[10分钟] – 数据库模式[10分钟]
冗余独立对象模式
• 描述
– 需求确保对象的可用性,即使它或者它的运行 平台出故障时也应如此。可以提供冗余对象来 完成,这种冗余对象不依赖于任何单个公共资 源
提示修复模式
• 描述
– 当冗余对象集中又一个对象失效时,在整个冗 余对象集变为不可用之前必然会发生一次更小 的失效,为了使灾难性失效发生的可能性减到 最小,应该尽快地修复失效的对象
• 益处
– Bean开发者只写本地JAVA代码,不必实现分 布式编程
线程管理与同步
• 描述
– 当需要服务于多个客户请求时,容器启动和停 止线程。容器同步这些线程以避免对一个企业 bean实例的并发方法激活
• 益处
– Bean开发者不必实现复杂的多线程程序。 Bean开发者编码这些也不方法好像企业bean 实例只被一个用户使用
分布式体系结构模式
• 共享对象模式 • 对象请求代理模式 • 对象复制模式 • 冗余独立对象模式 • 提示修复模式 • 移动代理模式 • 隔离带模式 • 进程对模式
共享对象模式
• 描述
– 在信息或资源有限的情况下,有时需要多个客 户之间共享对象,以便共享对象所封装的信息 和基础资源可以集中管理与其他对象共享的对 象,这样可以不增加共享对象或被共享对象的 复杂性。
保护代理模式
• 描述
– 恶意的对象可能想干扰其他对象的完整性,他 们使用反射或其他方法来访问不该它们访问的 方法或变量。基于安全考虑,应该避免这种情 况的发生,可以要求其他对象通过代理访问敏 感对象,以限制对敏感对象的访问。保护代理 模式实现了一些措施,以确保其他对象不能访 问没有授权的敏感对象的特性
邮箱模式
• 为了将消息可靠地传递给对象,可以将消息 保存起来,以便日后有各个接收者进行检索
重量级/轻量级模式
• 描述
– 设计一个客户程序,原则是尽可能小,该客户 程序必须能够访问拥有很多属性的对象,并且 属性都是大型的对象,客户程序并不总是需要 属性,因此可以让客户程序下载不带属性的对 象,然后根据需要慢慢下载属性
source: http://java.sun.com/j2ee/1.4/download-dr.html
web services支持
• SOAP • SOAP with Attachments • WSDL • UDDI • SOAP transport
– HTTP – HTTPS
• WS-I Basic Profile 1.0
对象请求代理模式
• 描述
– 也称ORB。分布式环境中的对象需要调用远 处对象的方法,要进行远程调用,必须正确处 理很多细节。可以提供一种允许对象进行远程 调用的基础结构,用过这种基础结构,可以自 动隐藏和处理大多数调用细节。
对象复制模式
• 描述
– 需要提高分布式计算的吞吐量和可用性。分布 式计算包含一些对象,它们驻留在多个计算元 素上,能够彼此进行通信。在有些情况下,可 以对计算的可用性和吞吐量加以改进,方法是 将一个对象复制到多个计算元素上,而对于对 象客户仍保留只有一个对象的假象
进程管理
• 描述
– 容器可以使用与目标服务器最理想的(或者由 系统管理员设定的)那样多的操作系统进程
• 益处
– Bean开发者不必关心如何管理操作系统进程
事务处理
• 描述
– 基于部署描述符的指令,容器也许:将一个方 法调用包装在一个事务处理中,从一个客户移 入事务处理,容器将这个事务处理扩散到资源 管理器和这个企业bean所点调用的其他企业 bean。容器还执行事务处理提交协议
扩展接口
• 描述
– 允许组件导出多个接口,当开发人员扩展或修 改组件的功能时,此模式能够防止接口的膨胀 和客户机代码的破坏
事务处理模式
• ACID事务处理模式 • 复合事务处理模式 • 两阶段提交模式 • 审计跟踪模式
ACID事务处理模式
• 描述
– 确保事务处理不会出现非预期的或不一致的结 果,这可以通过确保事务处理拥有ACID属性 来实现。
复合事务处理模式
• 描述
– 人们通常希望以最小的代价设计和实现正确的 事务处理,与复杂的事务处理相比,简单的事 务处理易于实现,而且也容易保证正确性。通 过较为简单的ACID事务处理可以设计和实现 复杂的事务处理
运行时的RMI-IIOP对象
客户
AccountHomeR MI对象
容器
委派
AccountRMI对 象
AccountBea n类实例
容器在委派时插入的服务: 事务处理 安全 多线程 持久性
失败恢复 负荷分担 集群
分布式对象协议
• 描述
– 容器实现了用于企业bean与它们的客户之间 的通信的分布式对象协议
• 益处
– 容器能够达到一个高数量用户要求的可伸缩性 ,而bean开发者的负担达到极小
资源共享
• 描述
– 容器能够高效地重用资源,如数据库的连接, 以达到更高的性能
• 益处
– Bean开发者不必开发复杂的共享逻辑
数据存取
• 描述
– 对于由容器管理持久性的实体bean,容器生成 数据存取逻辑
• 益处
• JMX 1.2
• J2EE Management API 1.0
• J2EE Deployment API 1.1
J2EE 1.4 与 Web Services
“The Java 2 Platform, Enterprise Edition version 1.4 is the most complete Web services platform ever.”
– 在部署时调整一个企业bean以便和现有的数 据库一起工作
系统管理支持
• 描述
– 容器提供了系统管理工具来管理已经部署好的 应用
• 益处
– 企业bean在运行时可管理。bean开发者不必 开发管理支持作为应用的一部分
失败恢复
• 描述
– 容器能够提供一个重启一个失败的事务处理或 应用的原子性
• 益处
• 益处
– Bean开发者不必实现书务处理在一个分布式 系统中的复杂管理
安全
• 描述
– 容器在委派一个客户调用之前检查客户是否授 权来调用一个业务方法
• 益处
– 安全策略不必硬编码到企业bean中。它们能 够由部署者和系统管理员来设置以满足企业的 需要
状态管理
• 描述
– 容器在需要释放资源时可以去活一个企业 bean对象。以后,当这个对象被一个客户调 用时,容器激活这个对象
组件配置器
• 描述
– 允许应用程序在不必修改、重新编印、静态地 重新链接应用程序的情况下,在运行时链接和 解链它的组件实现。组件配置器进一步支持在 不必关闭和重启运行的进程的情况下,把组件 重新配置到不同的应用程序进程。
截取器
• 描述
– 允许透明地把服务加到框架中,并且某些事件 发生时能自动地触发服务
移动代理模式
• 描述
– 对象需要访问大量的远程数据,为了保存网络 带宽,数据不放在对象上,而是将对象移动到 数据上
隔离带模式
• 描述
– 也称DMZ – 黑客将会威胁到公共可访问服务器的安全。人
们当然不希望黑客访问非公共的以及还有敏感 信息的服务器。可以将在公共Internet上访问 的服务器放到公共可访问的LAN上,它位于防 火墙和公共Internet之间
– Bean开发者不必将失败恢复或重启逻辑编码 到应用中
高可用性
• 描述
– 容器可以提供成熟的高可用性策略对客户屏蔽 各种服务器错误
• 益处
– 因为高可用性支持对于bean开发者是透明的 ,因此任何ejb应用能够制成高可用的,只要 将它们部署在一个实现了高可用性支持的容器 中
群集
• 描述
– 一个高端容器可以分布在一个群集服务的多个 节点上
两阶段提交模式
• 描述
– 如果事务处理有多个数据库管理器发布的简单 事务处理组成,并且想让它们全部成功完成或 者全部异常终止并使所有对象恢复到事务处理 开始前的状态,那么可以使用一个负责调整这 些事务处理的对象来实现
审计跟踪模式
• 描述
– 用户需要验证正在处理的事务处理的正确性和 公正性,这可以通过维护适用于一个或一系列 对象的事务处理的历史记录来实现。记录应该 含有足够的信息以确定事务处理如何影响对象 使之达到当前的状态
Web 容器
wenku.baidu.com
EJB
EJB
EJB 容器
数据库
J2EE提供的服务
• 容器为部署在其中的企业bean提供下列服务
– 分布式对象协议 – 线程管理与同步 – 进程管理 – 事务处理 – 安全 – 状态管理 – 资源共享 – 数据存取 – 系统管理支持 – 失败恢复 – 高可用性 – 集群 – 负荷分担 – 生命周期管理 – 事件服务 –…
J2EE 1.2 1999年12月
J2EE 1.4 2003年11月
1998 1999 2000 2001 2002 2003
EJB 1.0 1998年3月
JSP 1.0 1999年11月
J2EE 1.3 2001年9月
J2EE 应用服务器
客户端
浏览器
应用程序 客户端
应用程序 客户端 容器
J2EE 服务器 Servlet JSP
服务访问与配置模式
• 包装器外观(Wrapper Façade) • 组件配置器(Component Configurator) • 截取器(Interceptor) • 扩展接口(Extension Interface)
包装器外观
• 描述
– 包装器外观设计模式把现有的非面向对象的 API所提供的函数和数据封装在更加简洁、健 壮的、可移植的、可维护的和内聚的面向对象 的类接口中
对象标志符模式
• 描述
– 对于在多个对象中出现的对象需要唯一的标识 ,将一个全局惟一的标志符分配给该对象,这 样它在程序或数据库间共享时可以由惟一的身 份
注册模式
• 描述
– 对象需要与其他对象联系,但是如果只知道其 他对象的名字或其提供的服务名,如何与它联 系呢?可以提供一种服务来获取对象、服务或 作用,并返回远程代理,远程代理封装了如何 与命名对象联系的内容
进程对等模式
• 描述
– 为保持进程或软件组件的高可用性,用户希望 在其失效后能够自动重启。将高可用性的软件 组件成对组织,这样当一个失效后,另一个可 以重启它
分布式计算模式
• 对象标志符模式 • 注册模式 • 保护代理模式 • 发布-订阅模式 • 重发模式 • 邮箱模式 • 重量级/轻量级模式 • HeartBeat模式 • 链接多路复用模式
发布-订阅模式
• 描述
– 有时需要为一个或多个对象及时传递消息,要 将消息传递给订阅该消息的接收者对象,可分 别把各个消息传递给各个接收者。为了确保传 送可靠,可在传送失败时重发直到成功为止
重发模式
• 描述
– 需要确保对象可靠地将消息发送给远程对象。 如果不成功,再来一次,当对象发送失败后, 可以再试一次,直到发送成功为止
J2EE 1.4 规范
246 pages
J2EE 1.4 技术
• Servlets 2.4 • JSP 2.0 • EJB 2.1 • JMS 1.1 • JTA 1.0.1B • JTS 1.0
• JCA 1.5 • JAXR 1.0 • JAX-RPC 1.1 • SAAJ 1.2 • JACC 1.0 • JavaMail 1.2
中间件软件体系结构
• 中间件体系结构的发展
– 集中式大型机模式 – 文件共享模式 – 客户/服务器模式 – 传统的三层结构模式 – 早期的基于Web模式 – J2EE模式 – .NET模式
中间件软件体系结构
• J2EE/.NET体系结构介绍
J2EE平台的演进
Servlets 2.1 1998年11月
中间件体系结构与设计模式
软件模式专家 J2EE专家
罗勇文
luoyw@omguml.com
开场白
• 自我介绍
议题
• 中间件软件体系结构[70分钟] – J2EE/.NET体系结构介绍 – J2EE/.NET实例分析
• 休息10分钟 • 企业设计模式[90分钟]
– 服务访问与配置模式 – 事务处理模式 – 分布式体系结构模式 – 分布式计算模式 – 并发模式 – 时间模式 – 数据库模式 • 讨论[10分钟]
• 益处
– 因为群集对于bean开发者是透明的,因此所 有的ejb应用能够运行在一个群集系统上
企业设计模式
– 服务访问与配置模式[10分钟] – 事务处理模式[10分钟] – 分布式体系结构模式[10分钟] – 分布式计算模式[10分钟] – 并发模式[10分钟] – 时间模式[10分钟] – 数据库模式[10分钟]
冗余独立对象模式
• 描述
– 需求确保对象的可用性,即使它或者它的运行 平台出故障时也应如此。可以提供冗余对象来 完成,这种冗余对象不依赖于任何单个公共资 源
提示修复模式
• 描述
– 当冗余对象集中又一个对象失效时,在整个冗 余对象集变为不可用之前必然会发生一次更小 的失效,为了使灾难性失效发生的可能性减到 最小,应该尽快地修复失效的对象
• 益处
– Bean开发者只写本地JAVA代码,不必实现分 布式编程
线程管理与同步
• 描述
– 当需要服务于多个客户请求时,容器启动和停 止线程。容器同步这些线程以避免对一个企业 bean实例的并发方法激活
• 益处
– Bean开发者不必实现复杂的多线程程序。 Bean开发者编码这些也不方法好像企业bean 实例只被一个用户使用
分布式体系结构模式
• 共享对象模式 • 对象请求代理模式 • 对象复制模式 • 冗余独立对象模式 • 提示修复模式 • 移动代理模式 • 隔离带模式 • 进程对模式
共享对象模式
• 描述
– 在信息或资源有限的情况下,有时需要多个客 户之间共享对象,以便共享对象所封装的信息 和基础资源可以集中管理与其他对象共享的对 象,这样可以不增加共享对象或被共享对象的 复杂性。
保护代理模式
• 描述
– 恶意的对象可能想干扰其他对象的完整性,他 们使用反射或其他方法来访问不该它们访问的 方法或变量。基于安全考虑,应该避免这种情 况的发生,可以要求其他对象通过代理访问敏 感对象,以限制对敏感对象的访问。保护代理 模式实现了一些措施,以确保其他对象不能访 问没有授权的敏感对象的特性
邮箱模式
• 为了将消息可靠地传递给对象,可以将消息 保存起来,以便日后有各个接收者进行检索
重量级/轻量级模式
• 描述
– 设计一个客户程序,原则是尽可能小,该客户 程序必须能够访问拥有很多属性的对象,并且 属性都是大型的对象,客户程序并不总是需要 属性,因此可以让客户程序下载不带属性的对 象,然后根据需要慢慢下载属性
source: http://java.sun.com/j2ee/1.4/download-dr.html
web services支持
• SOAP • SOAP with Attachments • WSDL • UDDI • SOAP transport
– HTTP – HTTPS
• WS-I Basic Profile 1.0
对象请求代理模式
• 描述
– 也称ORB。分布式环境中的对象需要调用远 处对象的方法,要进行远程调用,必须正确处 理很多细节。可以提供一种允许对象进行远程 调用的基础结构,用过这种基础结构,可以自 动隐藏和处理大多数调用细节。
对象复制模式
• 描述
– 需要提高分布式计算的吞吐量和可用性。分布 式计算包含一些对象,它们驻留在多个计算元 素上,能够彼此进行通信。在有些情况下,可 以对计算的可用性和吞吐量加以改进,方法是 将一个对象复制到多个计算元素上,而对于对 象客户仍保留只有一个对象的假象
进程管理
• 描述
– 容器可以使用与目标服务器最理想的(或者由 系统管理员设定的)那样多的操作系统进程
• 益处
– Bean开发者不必关心如何管理操作系统进程
事务处理
• 描述
– 基于部署描述符的指令,容器也许:将一个方 法调用包装在一个事务处理中,从一个客户移 入事务处理,容器将这个事务处理扩散到资源 管理器和这个企业bean所点调用的其他企业 bean。容器还执行事务处理提交协议
扩展接口
• 描述
– 允许组件导出多个接口,当开发人员扩展或修 改组件的功能时,此模式能够防止接口的膨胀 和客户机代码的破坏
事务处理模式
• ACID事务处理模式 • 复合事务处理模式 • 两阶段提交模式 • 审计跟踪模式
ACID事务处理模式
• 描述
– 确保事务处理不会出现非预期的或不一致的结 果,这可以通过确保事务处理拥有ACID属性 来实现。