Jt —— 面向Java模式的框架
副标题#e#
概述
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. 动静传送设计模式(没有信使的同步模式)
#p#副标题#e#
功效:
封装。动静传送设计模式最大化封装。每个组件是一个自包括/独立单位。与其他组件和应用措施的惟一通信机制是通过动静传送。
解耦。MDP 最小化耦合。同样,每个组件是一个自包括单位,可独立于系统其余部门执行。
可重用性。MDP 提高可重用性。这雷同于 “Lego” 会合的构建块。可以基于共享一种简朴互联方法的简朴片断(譬喻,民众接口)构建巨大模子。该要领的成果来自于这些片断组装的组合数。可将利用动静传送设计模式的组件互换地插入巨大应用措施中。组件可随意以任何设置举办组装。一个组件的用户需要知道组件处理惩罚的输入/输出动静。应用措施也可以或许重用来自其他组件级应用措施的组件:假如利用动静传送设计模式,就可从另一个应用措施中提取一个组件。
#p#分页标题#e#
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 和相关框架可以利用任何计较机语言或技能予以实现。
设计模式实现
如前所述,MDP 用于实现和/或促进 Gang of Four (GoF)、DAO 和 J2EE 等知名设计模式的实现。为了表明如何完成该实现,要用到几个模式。同样的观念合用于其他模式的实现。Jt 框架运用这些模式实现高级成果。
Proxy
动静传送设计模式促进 Proxy 的实现。在动静传送范式下,Proxy 主要认真将输入动静转发到真实主体。
图 4. Proxy 的 MDP 实现
Adapter
动静传送设计模式促进 Adapter 的实现。Adapter 的主要用途是实现吸收方和发送方之间的动静转换,从而使这些组件相互毗连。
图 5. Adapter 的 MDP 实现
Web 处事和透明会见
留意,MDP 发送方和吸收方不需要在同一个主机上运行。可以将动静发送到长途组件上。MDP 在这方面不加以限制。利用一个现实类比法,您可以通过电话/互联网对话与同屋内或千里以外的伴侣举办通信。MDP 可以或许处理惩罚所有这些场景。您和您的伴侣无需体贴对话的传输方法(技能、通信协议、安详机制等)。虽然,这些对您应该是透明的。
#p#分页标题#e#
如图 6 所示,动静传送设计模式和前面接头的其他几个设计模式可连系利用,来实现对长途组件的会见。不管利用的协议和通信技能是什么,MDP 都可以或许提供对长途组件/处事的透明和安详会见:长途组件被看作当地组件。动静可以通过 Web 处事、REST、EJBs、RMI、HTTP、Sockets、SSL 或任何雷同的通信接口举办传输。上面接头的设计模式通过埋没与长途 API 相关的巨大性实现该透明和安详会见。
图 6. 对漫衍式组件/处事的 MDP 透明会见
为清晰起见,将信使组件和内部 processMessage() 要领从下面的 UML 图中删除。尽量异步动静传送受支持,这里只显示同步动静传送。
署理:动静通过署理被发送到长途组件。
长途适配器:适配器认真通过转化动静与长途 API 毗连。
外观:将动静转发到符合的长途组件。它凡是也提供安详成果。
再回到我们的现实类比法中,电话公司保存的框架需要某种注册(电话薄)才气定位其他参加者。每个实体都有一个相关的电话号码或 ID。所需要的是一个简朴的定名机制。在某些环境下,我们大概需要提供一个都市编码和/或国度编码。邮政处事和您的互联网处事提供商也利用一个相对简朴的定名方案。
其他处事提供者操作框架并利用定制的身份验证/授权 机制。譬喻,您的银行机构操作电话系统且利用 Access Management 机制举办身份验证和授权。我们在获准会见一个账户之前需要提供身份验证信息。
所需的其他框架组件差异于上面概述的那些组件。Facade 组件凡是认真安详性(动静传送授权和身份验证)。在将动静转发给吸收方之前,Facade 在其上执行解密、授权和身份验证。
图 7. 对漫衍式组件/处事的 MDP 安详会见
下面是所涉及的组件:
MessageCipher:认真解密输入动静并加密回覆动静的组件。可设置该组件来利用一个特定加密方案。
Component Registry:答允系统注册并按照 ID 查询组件。
AccessManager:认真授权/拒绝对长途组件的会见。它对收到的每个动静授权并举办身份验证。假如会见打点器不能认证动静,动静就永远不会达到吸收方。
框架安详
MDP 可以自然、直观的方法处理惩罚安详困难。它提供端到端、不行否定的动静层安详性(与传输层安详相反)。它还可用于选择性加密,因此只有敏冲动静被加密。知名的安详机制很适合于 MDP。另一方面,我们的模子不范围于某个动静名目(XML、SOAP 等)。它提供任何动静名目和 REST 式处事。这包罗专用和自界说动静名目。
留意,在一个动静传送范式下,大部门安详方面临付动静发送方和吸收方都可以是透明的。譬喻,发送方和吸收方不需要过于体贴是否利用了安详性且如何实现安详性。框架提供必须的安详性组件和机制(“管道”)。一般来说,利用我们的现实类比法,您和您的伴侣就无需担忧处事提供者是否出于隐私和安详原因对您的对话举办了加密。Jt 框架还利用声明安详性来制止编写易堕落的安详代码。最后,可基于特定需求提供定制的安详机制。
异步动静传送、双向动静传送和多线程
此刻以您的电子邮件或邮政信箱为例。可将动静异步发送并安排在一个动静行列或堆上,直至您筹备 “处理惩罚” 它们。MDP 可以或许处理惩罚与异步动静传送和多线程相关的巨大性。框架组件可以或许在一个独立的线程中执行任务。这是对现实世界的一个自然表达:每个组件(实体)是一个自包括单位,可以或许独立于系统其余部门执行任务。利用组件自身的独立线程,可以异步处理惩罚动静。这个成果通过一个动静传送行列在 Jt 框架的上下文中实现。组件不需要添加独立逻辑来打点多线程,因为这很耗时、巨大且易于堕落。
您也可以抉择异步发送回一个动静,成立一个双向通信。MDP 可以或许成立双向异步动静传送机制,个中组件和应用措施彼此通信。也可以将同步和异步动静传送团结起来。好比,在一个同事或主管来查抄进度的同时,您正在阅读您的电子邮件动静。
机能、可伸缩性和容错问题
MDP 模子简朴、通用、结实。它可以或许处理惩罚与漫衍式应用措施相关的巨大问题。MDP 与通用的可伸缩性和可用性机制(集群、负载均衡、妨碍转移、缓存等)相兼容。譬喻,基于 MDP 的 SOA 和 ESB 应用措施可以或许在计较机集群上运行,从而提高靠得住性和可用性。您也可以利用 MDP 机动地选择和组合协议和技能。您不必范围于某一技能或协议。您的选择取决于详细机能和可用性需求。
#p#分页标题#e#
MDP 也可通过一种很自然的方法予以扩展,以提供容错成果和技能。复制状态秘密领是实现容错系统的一种通用要领,它复制组件并通过 consensus 算法协调其交互。框架组件的行为正好雷同于状态机:输入动静、输出动静和组件状态是模子的构成部门。
企业处事总线(ESB)成果
Jt 设计模式框架也是一种动静传送引擎,提供企业处事总线(ESB)成果。它提供对运行在长途应用措施内部的组件的透明会见。框架组件(当地和长途)可以或许安详地互换动静。Jt 框架还答允您毗连异构应用措施,而不管利用什么技能,这些技能包罗 JMS、Web Services、EJB、REST, HTTP、EJBs 等。由框架(动静传送、适配器、长途署理、计策、外观等)实现的设计模式可实现该成果。Jt 企业处事总线包罗以下主要组件:
Enterprise Service Bus Adapter
JMS Adapters (point-to-point and publish-subscribe)
EJB Adapter
EJB Proxy
RESTful web services Adapter
Secure web services Adapter (Axis)
Axis Proxy
Message Cipher
Message Authenticator
Access Manager
Data Access Objects
Java Mail Adapter
XML/Component transformer
可利用 “lego/messaging” 架构将这些组件互换地插入巨大的框架应用措施中。可通过各类设置装配它们来满意特定业务需求。在这种环境下,这些构件块被组合在一起来配合实现企业处事总线(ESB)成果。
框架 ESB 适配器将应用措施毗连到 Jt 企业处事总线。可对 ESB 适配器举办设置,来利用任何互换动静计策:JMS、安详的 Axis Web 处事、EJBs、安详的 REST 式 web 处事、HTTP 等。定制/专用计策和协议大概也会用到。ESB 适配器和其他 ESB 组件也认真自动将动静转化为适当的名目/协议。