Jt是一种用于快速实现Java应用程序的设计模式框架。Jt在许多大的任务关键型系统中有应用。该框架实现以下目标:
框架架构基于一个消息传送设计模式:框架组件能够交互信息并通过发送、接收和处理消息执行计算。一个消息传送API具有简易性、强大的封装性和松耦合特性;可以使用一个“lego/messaging”架构将框架组件交换地插入复杂的框架应用程序中。可对框架消息执行同步或异步处理。框架充分利用消息设计模式/API的功能和简易性。
设计模式框架使用消息传送来实现和/或促进Gang Of Four (GoF)和J2EE等知名设计模式的实现。框架本身已基于设计模式被完全创建和实现。框架还基于设计模式促进和加速应用程序的实现。
框架lego/messaging架构提供对远程组件的透明和安全访问;可将远程框架对象看作是本地对象。由框架(消息传送、适配器、远程代理和外观)实现的设计模式隐藏与远程API相关的复杂性,从而实现透明和安全访问。用于消息加密和身份验证的内置组件也会予以提供。
框架通过框架适配器、代理和相关设计模式的实现提供与其他技术的透明集成。这些技术包括BPM、Data Access Object实现(DAO)、Model View Controller实现(MVC)、EJBs、JSP、AJAX、ESB、JMS、XML、REST和Web服务。
该框架设计为轻量级和快速特性(开销小/占用内存少)。
框架messaging/lego架构提高和简化了设计/开发工作。UML设计图与实现所需的基于消息传送的框架应用程序和组件之间有一个紧密的对应关系。框架提供生成框架应用程序所需的向导和自动化功能。可将框架组件轻松添加到BPM/BPEL流程图。在未来版本的框架中,应该可以直接从UML设计图生成应用程序模块。该目标仍在发展中。
框架消息传送架构促进测试和调试工作。框架可将组件分为独立单元进行测试,方法是发送消息到组件并验证回复消息。
消息传送设计模式(MDP)
意向(Intent):消息传送设计模式支持组件与应用程序之间的信息交换(例如,消息)。
动机(动力):该设计模式可用于在许多不同的场景中解决各种各样的问题。一个消息传送范式在模式和现实世界中被广泛使用。我们周围到处都有消息的交换。实体在不断发送、接收和处理消息。例如:当我们看电视、听音乐、接听电话或通过互联网通信时。现在,您在阅读这个书面消息。由于计算机应用程序寻求建模现实世界,而使用消息传送方法设计和编写应用程序是最自然的。我们可以说这个方法提供一个对现实世界更复杂和准确的呈现(例如,模型)。结果,通过使用消息传送设计模式,软件工程设计流程得到显著改进。
参与者:
消息发送方:发送消息的组件。
消息接收方(Reciever):接收输入消息的组件,它在处理消息之后可能会生成一个回复(输出消息)。一般来讲,输入消息可能包含任何类型的信息。组件可能还要基于输入消息执行计算。
信使(Messenger):将信息从发送方传输到接收方的中介。发送方和接收方不需要关心信息的传输方式(通信协议、消息格式、加密/安全机制等)和沿途对消息执行的转换。这是信使的用途和责任。类似于现实世界,经常不需要用到信使。可以将消息直接发送给接收方。通信模式包括:同步、异步和双向消息传送。
消息:需要在发送方与接收方之间交换的任何信息(例如,数据)。通常涉及两种消息:输入消息和输出消息(或回复消息)。回复消息不是必需的。
图 1. 消息传送接口
图 2. 消息传送设计模式(同步模式)
图 3. 消息传送设计模式(没有信使的同步模式)
结果:
- 封装。消息传送设计模式最大化封装。每个组件是一个自包含/独立单元。与其他组件和应用程序的惟一通信机制是通过消息传送。
- 解耦。MDP最小化耦合。同样,每个组件是一个自包含单元,可独立于系统其余部分执行。
- 可重用性。MDP提高可重用性。这类似于 “Lego” 集中的构建块。可以基于共享一种简单互联方式的简单片段(例如,公共接口)构建复杂模型。该方法的功能来自于这些片段组装的组合数。可将使用消息传送设计模式的组件交换地插入复杂应用程序中。组件可随意以任何配置进行组装。一个组件的用户需要知道组件处理的输入/输出消息。应用程序也能够重用来自其他组件级应用程序的组件:如果使用消息传送设计模式,就可从另一个应用程序中提取一个组件。
- QA/测试流程。MDP促进测试和调试工作。通过发送消息到组件并验证回复消息(黑盒测试),可将组件作为独立单元进行测试。一般而言,可以通过一个测试装置执行单元测试。无需在组件代码内包含测试代码,因为这很耗时且容易引发意外的软件问题。
- 设计流程。MDP提供和简化设计流程。多半设计工作就是,定义满足系统需求所需的组件集和每个组件需要处理的输入/输出消息。UML设计图与实现所需的组件之间有一个紧密的对应关系。由于所有组件共享同一个消息传送接口,可以将它们轻松添加到BPM/BPEL图。如前所述,这类似于构建块,可通过多种方式重用和连接。
- 开发流程。由于依赖于消息传送的每个组件都是自包含的,一个团队中的成员可以协作进行开发,无需介入其他人的代码/工作。在理想情况下,一个组件/包可由一个人专门负责。团队其余成员需要知道其他人要处理的输入/输出消息。无需更改其他人的代码。而且不需要或很少需要创建、维护和合并多个版本的代码。测试/QA工程师可以通过一个测试装置独立执行其测试。总而言之,无需添加测试代码。
- 日志记录和调试。由于所有组件使用相同的消息传送接口,消息会被自动记录。这降低了在代码中添加 print/logging 语句的需求,这个工作很耗时且容易出错。看一下记录的消息,用户通常就能够快速查出引起问题的消息/组件(只需少量工作或无需额外工作)。
- 开发速度和成本。基于上面概括的所有原因,消息传送设计模式能够极大地提高开发速度并降低成本。
- 质量和软件维护。质量和软件维护工作也由于上述原因得到改进。
- 为了充分利用这个设计模式,人们在建模、设计和构建软件应用程序时需要考虑消息传送方面:独立的实体(例如,组件)相互交换消息。这可能需要学习和培训。尽管一个消息传送方法自然、直观且与现实世界一致,传统方法基于库和方法/程序调用(包括本地和远程)。
- MDP如同一个状态机。因此可以通过复制组件并通过 consensus 算法协调其交互对其进行扩展,从而以一种更自然、直观的方式提供容错功能。一般来说,向一个不使用MDP的程序添加容错特性是一项很困难的任务。
实现和代码示例:
消息传送设计模式是使用Jt消息传送接口(JtInterface)实现的。该接口包括一个方法:
清单 1. 消息传送接口
以下是引用片段: public interface JtInterface { /** * Jt messaging interface used for the implementation * of the messaging design pattern. * Process an input message and return a reply (output message). */ Object processMessage (Object message); } |
消息传送接口(JtInterface)简单而功能强大。该接口的简易性具有欺骗性。所需要的只是一个方法。它充当一个通用消息传送接口,适用于远程和本地框架组件。该接口处理任何类型的消息(对象类)。尽管这里提出了一个Java实现,不过MDP和相关框架可以使用任何计算机语言或技术予以实现。
在《面向Java模式的框架Jt:设计模式实现》中,我们将继续介绍设计模式的实现等内容。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
内存数据网格提供商一头扎进Java
10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。
-
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高, 直到把内存吃完应用崩溃,但是这个wrapper
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高 […]
-
Google App Engine for Java 对于目前中国需要学习吗?
-
前无古人后无来者的Java平台
开发人员一直在致力于保持Java的活力,经过20年后,我们感觉从来没有更好的、更令人激动的时刻如同Java社区一样。