




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件体系架构模式在J2EE中的应用本文介绍了软件体系架构模式的层模式,分析了它的结构,特点,实现,以及优缺点等.然后介绍遵循层模式的Architectural cube理论,结合J2EE的体系架构特点,剖析层模式是怎样应用的.最后以PetStore为例,简单阐述怎样应用该模式在实际的J2EE系统之中.层体系架构模式层(layer)体系架构模式就是把应用系统分解成子任务组,其中每个子任务组处于一个特定的抽象层次上。1.1概述层架构模式组织成一个层次结构,每一层为上层服务(Service Provider),同时也作为下层的客户端。在一些层次系统中,除了包含一些输出函数外,内部的层只对相邻的层可见。这样的系统中构件在一些层实现了虚拟机(在另一些层次系统中层是部分不透明的)机制。层的调用通过决定层间如何交互的协议来定义。这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂问题分解成一个层堆栈的实现。由于每一层最多只影响两层,同时只要给相邻层提供接口,允许每层用不同的方法实现,因此为软件重用提供了强大的支持。1.2问题层结构是最成熟的软件体系架构模式,它起源于早期的系统设计,由开始的函数调用,作为函数库,供其他程序进行调用.一般在系统设计时,由一系列高层模块和底层模块处理构成,并且高层的模块依赖于底层.因此为了完成系统的设计必须要考虑一下因素:源码的修改会影响整个系统,应该被限定在一个部件内部而不影响其他模块接口应当稳定,甚至要被规范化系统的架构应该灵活,可以更换系统的开发需要被划分为多个部分,比如团队开发或者异地开发1.3模式结构从系统高层的观点来看设计方案比较简单,它把系统进行分为几个层次并且把它们叠加起来,最下面的抽象层称为第一层,它是系统基础.依次类推,把n层放在第n-1层上.其结构如下图:1.4非软件描述层模式在现实生活中很常见.特别在中国的封建社会的等级森严的制度下,把人分为几个等级,其实就是分层,上层可以指示下层.不过现在有的企业管理制度,与这种管理理念相适应的管理体制是垂直的自上而下的泛官僚体制结构。其结构设置表现为自上而下的单向层级制,这种结构有利于政令的传达和执行,保证管理的效率,但是官僚特性也很明显.如下图:层模式在现代物流也很常见,如下图的,在自行车在运输的过程,首先在自行车厂进行出厂,有人员进行打包,然后进行装运,最后再有相应的分销商,进行组装销售.1.5优点与缺点层架构模式是最常用的一种软件体系架构模式。从它的实现和结构图中,我们可以得出,该模式具有以下优点和缺点:1.5.1优点层次的复用性.如果每个层次有很好的抽象接口,那么它可以被其他环境复用支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解,使系统更容易模块化支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层可替换性.因为独立的层次设计很容易被功能相同的模块替换但是在实际的项目中,该模式也有相应的不足1.5.2缺点低效率分层结构通常要比单层结构的效率低.因为有时高层过分依赖底层的服务,因此必须穿过许多中间层进行数据的传送,甚至多次.改变行为的连锁反映回页首层架构模式在J2EE中的应用2.1 J2EE层架构模式的背景也许下图大家都比较熟悉,它介绍了软件从两层体系架构方式到三层的架构模式.由于2层的架构方式,存在以下几点缺点:软件部署开销很大每个客户端数据库驱动都需要进行安装和设置,一但程序发生改变,就需要重新部署,这意味巨大的开销改变数据结构的开销很大客户端应用程序一般通过JDBC,ODBC,ADO等直接访问数据库,这表明客户程序直接与底层数据结构交互。如果改变数据结构来处理新的过程,就需要重新部署每个客户端。改变数据库的类型的开销很大由于客户端直接使用特定数据库的API,和特定的存输过程,触发器等,因此数据库类型的改变,会引起很多的修改。但是通过把业务逻辑从存储过程和本地的业务逻辑进行分离,独立为一层,这样就是应用层架构模式最经典的应用之一.2.2 J2ee应用的概述J2EE平台为设计、开发、集成和部署企业应用提供基于组件的方法。这种方法不但能降低成本,还能对整个设计和实施过程进行快速跟踪。J2EE平台能提供多层分布式应用模型,能重用组件,能为用户提供统一安全模型和灵活的事务处理控制。在J2EE规范中进行了以下的分层:应用客户端组件Servlets和Java Server Pages(JSP)组件(也称为Web组件)Enterprise JavaBeans组件基础服务和与其他系统(如数据库等)的交互2.3 Architecture and the Cube软件体系架构研究者,把软件系统架构进行总结和分析,提出了Architecture cube理论.它把一个软件系统架构进行分解成三维进行分析,分别从Tier,layer,capabilities角度进行考虑.其中Tiers定义为:A logical or physical organization of components into an ordered chain of service providers and consumers.Components within atier typically consume the services of those in anadjacentprovider tier and provide services to one or moreadjacentconsumer tiers.Within atier,services are grouped to like requirements,such as functionality,security,or load distribution.Layers定义为:The hardware and software stack that hosts services within agiven tier.Physical,network,and software platforms and standard API sets support the components that provide aservice.Layers,like tiers,represent awell-ordered relationship across boundaries that are mediated by interfaces.Whereas tiers represent processing chains across components,layers represent container/component relationships in implementation and deployment of services.Systemic Qualities定义:The strategies,tools,and practices that deliver the requisite QoS(such as availability,scalability,security,and manageability)across the tiers and layers.大家都知道,再考虑评价一个软件体系架构是否先进时,我们经常要从非功能属性的角度去评审.我们首先进行区分功能属性和非功能属性的区别.功能属性(function property)用来描述整个系统的功能特性(feature),并且通常与特定的功能需求相关.功能特性可以通过特定的功能使用户可以直接看到的应用功能,可以通过实现来进行描述.非功能属性(non-function property)定义为解决一个软件系统的可靠性,兼容性,性能,易用性,可维护性等.我们的开发者过去习惯于专心提供功能属性,然而今天,非功能属性变得越来越来重要.在实际系统架构上,可能是每一个Tier上由不同的layer组成,或者说每一个layer都涉及不同的Tier,组成一个交错的系统,并且Capabilities又和这两者交织,如下图:2.4 J2EE架构的Cube 2.4.1 Tiers 概述如果按照Cube理论把J2EE进行分析,从它的Ties层的角度进行考虑,把它分为以下几个Tiers:客户端层,表示层,业务逻辑,集成层,资源层.每层都是按系统中业务逻辑而划分的,它具有唯一的职责。每层与相邻层都是松散耦合的。还可以把整个系统表示为层的堆栈。客户端层该层代表访问系统的人员,应用程序,或系统的客户端。它是整个系统的对外接口,可以是Web浏览器(IE),Java应用程序(Swing),Java Applet,WAP,其他设备或者是批处理程序。表示层该层封装了用来服务访问本系统的所有客户端的表示层逻辑。该层解释客户端的请求,提供单次登录,实现会话管理,控制对业务的访问(权限检查),构造客户端的回复(response),以及把回复传递给客户端。一般Sevlet,JSP驻留在该层。业务逻辑层该层提供业务服务,包括业务数据和业务逻辑。通常应用程序的大多数业务处理集中在本层。同时它管理事务。EJB驻留在该层。集成层该层负责与外部系统和外部资源通信,它有多种方式,如与数据库连接使用的JDBC等.资源层该层包括业务数据源和外部系统资源,如Oracle数据库,JMS server,其他遗留系统等.实现在实现上面的Tier时一般我还需要结合实际情况进行分解,如果大家对J2EE core patterns熟悉,可以了解到web层我们使用MVC模式,当然结合Filter,FrontControl,ViewHelp等模式,客户一般访问JSP(为了进行表示和业务的分离大多使用Taglib),然后由Control层进行处理,如果需要进行复杂的业务逻辑处理并且已经有后台实现(如EJB等),推荐经过Business Delegate层,访问后端业务逻辑(BP),一般业务逻辑使用Facade模式进行封装成统一的接口,业务逻辑层实现复杂的事务处理,如果需要访问资源层,再经过DAO层访问资源(目前多数是RDBMS,有时是遗留系统如Coraba,JMS,WebService,SAP等).具体见下图:关于Intercepting Filter,Front Controller,View Helper,Business Delegate,Facade模式请参见Core J2EE Pattern。2.4.2 Layers 概述在开发J2EE应用时,我们一般把它纵向分为以下几个层,最下层为OS,JVM,network,层,它们负责系统的底层操作和网络数据的传输,一般我们开发人员不用关心运行在什么具体操作系统上,什么样的网络环境下.它的上层为J2EE服务层,一般由J2EE服务器(如WebSphere,WebLogic等)提供各种基础服务,如事务的管理(JTS),命名目录服务(JNDI),负载均衡(Load Balancing),容错(failover),安全(security)等,其次是通用业务层,它一般完成与具体业务无关的基本操作,包括如基础的框架(Framework),commons组件,如通用的数据库处理组件,系统错误处理组件,字符处理和数值处理组件,日志(log)处理,数据转化和编码维护等核心层.最上层才是我们的具体业务逻辑模块,它完成具体的业务逻辑.具体见下图:实现结合J2EE实际环境,最底层一般不需开发人员关心的操作系统和网络环境,并且不同J2EE服务厂商都提供了相应J2EE所必须得基础服务层,我们开发人员一般只需关心上面两层的实现,应用服务层经常使用类似于struts,webwork,waf等的web application framework,log服务一般选择mons log等,其他具体的数据处理,数据的转化等操作我们需要进行开发,不过这些一般与具体项目无关,可以在公司内部不同的项目之间共享.其实Jakarta Commons提供的功能一般可以使用在该层.最上层才是我们的具体业务模块.见下图:2.5层模式实现讨论为把任务分组成层而定义抽象准则。根据抽象准则定义抽象层数。给每个层命名并指定它们的任务。指定服务细化分层为每个层指定一个接口。构建独立层。指定相邻层间的通信(或者调用)回页首Petstore的层架构模式3.1 PetStore概述PetStore是Sun公司在J2EE平台上开发的一个应用样例,是Java软件在J2EE的蓝图程序,它示范了如何利用J2EE1.3平台的性能去开发灵活、可升级的分布式平台企业应用系统。PetStore是一个运行在Web上的,为网络客户提供宠物信息浏览、网上订单和管理等功能的网上宠物店,在技术上使用了J2EE中的大部分企业组件和优秀的设计模式,提供了一套有高灵活性扩展性和可升级的完善J2EE开发框架.PetStore共有4个子系统组成:petstore Web Site该部分是petstore中的核心,客户登录系统进行选择,定购,提交定单等。petstore admin该部分是系统的管理功能Order processing center定单调度中心,对客户提交的定单进行处理PetStore supplier为产品供应者提供的维护画面在这里主要以WebSite为主进行分析(以下petstore均指该子系统),它是怎样进行分层处理的.3.2 Petstore体系架构我们按照层的架构模式进行分析,主要从Tiers和layer角度进行考虑.3.2.1 Layer层概述PetStore是基于Web应用系统,它的客户端使用Broswer,然后是Web层的应用,业逻辑的层(由EJB实现),资源管理层(包括数据库,JMS,JavaMail等).具体又细分为以下几层.客户请求浏览页面,一般Web层的View由JSP组成,并且使用了大量Taglib把每个请求映射到某个HTMLAction类,来响应它.HTML Action类是一个标准的类,执行选择的HTML ActionWCC是由WebClientController完成(实现类为WebClientControllerImpl),它实际是SUN核心模式的Business Delegate层ECC是EJBClientController,它实际是核心模式Session FacadeEjbAction层执行EJB Action,传送event参数进来.EJB Action读event里面的参数,并且操纵EJB或者别的数据源来执行相应的商业操作.业务集成层,由通过DAO,EntityBean,JMS等访问相应的资源.具体的详细的结构如下:实现在Web层它应用了著名的MVC模式,V由JSP来实现,为了业务逻辑和表示的分离,一般结合JSPTagLib.它把请求提交到相应的处理MainServelet,然后准发到RequestProcessor,他根据读取mappings.xml,的配置信息,生成相应的处理类Action如url-mapping url=createuser.doscreen=create_customer.screenisAction=trueaction-class com.sun.j2ee.blueprints.petstore.controller.web.actions.CreateU serHTMLAction/action-class/url-mapping每个Action一般包括以下几种方法(doStart,perform,doEnd),如果perform只需对请求的处理,如果处理的结果不需调用EJB的业务逻辑,只需返回即可,否则把请求组织成相应的Event,通过WCC转发到后台的业务逻辑层.代码见下:public void processRequest(HttpServletRequest request)throws HTMLActionException,EventException,ServletExceptionEvent ev=null;String fullURL=request.getRequestURI();/get the screen name String selectedURL=null;ServiceLocator sl=(ServiceLocator)request.getSession().getAttribute(WebKeys.SERVICE_LOCATOR);WebClientController wcc=sl.getWebClientController();HTMLAction action=getAction(selectedURL);if(action!=null)action.setServletContext(context);action.doStart(request);ev=action.perform(request);EventResponse eventResponse=null;if(ev!=null)eventResponse=wcc.handleEvent(ev);action.doEnd(request,eventResponse);通过WCC把Event转发到EC,这里WC是delegeteBussiness层public class WebClientControllerImpl implements WebClientControllerpublic synchronized EventResponse handleEvent(Event ev)throws EventExceptionreturn ccEcessEvent(ev);EC是Facade层,如下,public class EJBClientControllerEJB implements SessionBeanprotected StateMachine sm;public EventResponse processEvent(Event ev)throws EventExceptionreturn(cessEvent(ev);然后根据相应的Event的类型使用不同EJBAction来完成相应的业务逻辑,public EventResponse processEvent(Event ev)throws EventExceptionString eventName=ev.getEventName();String actionName=null;EventResponse response=null;if(eventName!=null)actionName=getActionName(eventName);EJBAction action=null;action=(EJBAction)Class.forName(actionName).newInstance();if(action!=null)action.init(this);/do the magic action.doStart();response=action.perform(ev);action.doEnd();return response;每个具体的EJBAction完成自己的具体的业物逻辑,如果处理数据对象,则使用的相应的实体对象(data module).具体的层次调用过程,见下图:3.2.2 Tier层概述PetStore Layer的设计分为以下几层,最底层为操作系统和网络服务,然后是基于J2EE服务器提供的系统服务层,上面是framework,Component层,包括WebApplicationFrameWork,以及commons业务逻辑,工具类等组成.最上层才是具体的业务实现模块具体见下图:实现Petstore主要开发了两层,其中业务核心层,主要有几部分WAF(Web Application Framework)ApplicationControl和Presentation(主要指JSP TagLib)Components(如各种实体对象如customer,Account,等)Business Logic Data各种常用的工具类层的业务逻辑包括以下几个部分:登录和注册,购物车模块,登录模块等我们以WAF为例介绍业务共同层的作用,开发者,可以基于这个框架,添加自己的代码和实现,下面红框内为WAF核心,如果增加新的业务功能只需增加相应的绿色部分.同时其他的components提供了对JMS,Mail等的处理.回页首相关设计模式4.1外观模式(Facade)外观模式的意图就是为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。其实层模式的每层之间的经常使用Facade来进行封装成一致的接口供上层进行调用.如PetStore的EJB层的ECC就是Facade模式的应用.public interface EJBClientController extends javax.ejb.EJBObjectpublic EventResponse processEvent(Event ev)throws EventException,RemoteE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南牟定县国有资本投资运营集团有限公司公开招聘工作人员5人笔试题库历年考点版附带答案详解
- 2025年医学影音学音学专业医学影像解剖识别模拟考核卷答案及解析
- 2025年医疗健康行业生物科技与数字化医疗研究报告
- 2025年建筑行业绿色建筑技术创新研究报告
- 2025年环保科技行业环境保护与清洁能源研究报告
- 2025年口腔科学基础知识考核模拟测试卷答案及解析
- 2025年通信行业通信技术与通信产业研究报告
- 2025年IT服务行业IT服务智能化发展研究报告
- 2025年人工智能行业发展趋势与前景展望研究报告
- 2025年金融行业智能化风险管理分析研究报告
- 2025年学校少先队知识应知应会题库(含答案)
- 核桃肽粉生产技术规程(征求意见稿)编制说明
- 《储能技术》课件-3.各种类型的蓄能技术
- (2025)企业首席质量官培训考核试题(附含答案)
- 工业厂区场地平整建设方案
- 2024年丽水市莲都区事业单位招聘真题
- DB31∕T 1545-2025 卫生健康数据分类分级要求
- 初中毕业证在哪里查询
- 九宫格智力数独200题(题答案)版
- GB/T 5796.4-2022梯形螺纹第4部分:公差
- 智能电网-课件
评论
0/150
提交评论