ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:24.07KB ,
资源ID:20562828      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20562828.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件体系架构模式在J2EE中的应用Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

软件体系架构模式在J2EE中的应用Word文件下载.docx

1、其结构设置表现为自上而下的单向层级制,这种结构有利于政令的传达和执行,保证管理的效率,但是官僚特性也很明显.如下图:层模式在现代物流也很常见,如下图的,在自行车在运输的过程,首先在自行车厂进行出厂,有人员进行打包,然后进行装运,最后再有相应的分销商,进行组装销售.1.5优点与缺点层架构模式是最常用的一种软件体系架构模式。从它的实现和结构图中,我们可以得出,该模式具有以下优点和缺点:1.5.1优点层次的复用性.如果每个层次有很好的抽象接口,那么它可以被其他环境复用支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解,使系统更容易模块化支持功能增强,因为每一层至多和相邻的

2、上下层交互,因此功能的改变最多影响相邻的上下层可替换性.因为独立的层次设计很容易被功能相同的模块替换但是在实际的项目中,该模式也有相应的不足1.5.2缺点低效率分层结构通常要比单层结构的效率低.因为有时高层过分依赖底层的服务,因此必须穿过许多中间层进行数据的传送,甚至多次.改变行为的连锁反映回页首层架构模式在J2EE中的应用2.1 J2EE层架构模式的背景也许下图大家都比较熟悉,它介绍了软件从两层体系架构方式到三层的架构模式.由于2层的架构方式,存在以下几点缺点:软件部署开销很大每个客户端数据库驱动都需要进行安装和设置,一但程序发生改变,就需要重新部署,这意味巨大的开销改变数据结构的开销很大客

3、户端应用程序一般通过JDBC,ODBC,ADO等直接访问数据库,这表明客户程序直接与底层数据结构交互。如果改变数据结构来处理新的过程,就需要重新部署每个客户端。改变数据库的类型的开销很大由于客户端直接使用特定数据库的API,和特定的存输过程,触发器等,因此数据库类型的改变,会引起很多的修改。但是通过把业务逻辑从存储过程和本地的业务逻辑进行分离,独立为一层,这样就是应用层架构模式最经典的应用之一.2.2 J2ee应用的概述J2EE平台为设计、开发、集成和部署企业应用提供基于组件的方法。这种方法不但能降低成本,还能对整个设计和实施过程进行快速跟踪。J2EE平台能提供多层分布式应用模型,能重用组件,

4、能为用户提供统一安全模型和灵活的事务处理控制。在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 org

5、anization 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 moreconsumer tiers.Within atier,services are grouped to like requirements,such as functionality,s

6、ecurity,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 m

7、ediated 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,se

8、curity,and manageability)across the tiers and layers.大家都知道,再考虑评价一个软件体系架构是否先进时,我们经常要从非功能属性的角度去评审.我们首先进行区分功能属性和非功能属性的区别.功能属性(function property)用来描述整个系统的功能特性(feature),并且通常与特定的功能需求相关.功能特性可以通过特定的功能使用户可以直接看到的应用功能,可以通过实现来进行描述.非功能属性(non-function property)定义为解决一个软件系统的可靠性,兼容性,性能,易用性,可维护性等.我们的开发者过去习惯于专心提供功能属性,

9、然而今天,非功能属性变得越来越来重要.在实际系统架构上,可能是每一个Tier上由不同的layer组成,或者说每一个layer都涉及不同的Tier,组成一个交错的系统,并且Capabilities又和这两者交织,如下图:2.4 J2EE架构的Cube 2.4.1 Tiers 2.4.1.1概述如果按照Cube理论把J2EE进行分析,从它的Ties层的角度进行考虑,把它分为以下几个Tiers:客户端层,表示层,业务逻辑,集成层,资源层.每层都是按系统中业务逻辑而划分的,它具有唯一的职责。每层与相邻层都是松散耦合的。还可以把整个系统表示为层的堆栈。客户端层该层代表访问系统的人员,应用程序,或系统的客

10、户端。它是整个系统的对外接口,可以是Web浏览器(IE),Java应用程序(Swing),Java Applet,WAP,其他设备或者是批处理程序。表示层该层封装了用来服务访问本系统的所有客户端的表示层逻辑。该层解释客户端的请求,提供单次登录,实现会话管理,控制对业务的访问(权限检查),构造客户端的回复(response),以及把回复传递给客户端。一般Sevlet,JSP驻留在该层。业务逻辑层该层提供业务服务,包括业务数据和业务逻辑。通常应用程序的大多数业务处理集中在本层。同时它管理事务。EJB驻留在该层。集成层该层负责与外部系统和外部资源通信,它有多种方式,如与数据库连接使用的JDBC等.资

11、源层该层包括业务数据源和外部系统资源,如Oracle数据库,JMS server,其他遗留系统等.2.4.1.2实现在实现上面的Tier时一般我还需要结合实际情况进行分解,如果大家对J2EE core patterns熟悉,可以了解到web层我们使用MVC模式,当然结合Filter,FrontControl,ViewHelp等模式,客户一般访问JSP(为了进行表示和业务的分离大多使用Taglib),然后由Control层进行处理,如果需要进行复杂的业务逻辑处理并且已经有后台实现(如EJB等),推荐经过Business Delegate层,访问后端业务逻辑(BP),一般业务逻辑使用Facade模

12、式进行封装成统一的接口,业务逻辑层实现复杂的事务处理,如果需要访问资源层,再经过DAO层访问资源(目前多数是RDBMS,有时是遗留系统如Coraba,JMS,WebService,SAP等).具体见下图:关于Intercepting Filter,Front Controller,View Helper,Business Delegate,Facade模式请参见Core J2EE Pattern。2.4.2 Layers 2.4.2.1概述在开发J2EE应用时,我们一般把它纵向分为以下几个层,最下层为OS,JVM,network,层,它们负责系统的底层操作和网络数据的传输,一般我们开发人员不用

13、关心运行在什么具体操作系统上,什么样的网络环境下.它的上层为J2EE服务层,一般由J2EE服务器(如WebSphere,WebLogic等)提供各种基础服务,如事务的管理(JTS),命名目录服务(JNDI),负载均衡(Load Balancing),容错(failover),安全(security)等,其次是通用业务层,它一般完成与具体业务无关的基本操作,包括如基础的框架(Framework),commons组件,如通用的数据库处理组件,系统错误处理组件,字符处理和数值处理组件,日志(log)处理,数据转化和编码维护等核心层.最上层才是我们的具体业务逻辑模块,它完成具体的业务逻辑.具体见下图:

14、2.4.2.2实现结合J2EE实际环境,最底层一般不需开发人员关心的操作系统和网络环境,并且不同J2EE服务厂商都提供了相应J2EE所必须得基础服务层,我们开发人员一般只需关心上面两层的实现,应用服务层经常使用类似于struts,webwork,waf等的web application framework,log服务一般选择mons log等,其他具体的数据处理,数据的转化等操作我们需要进行开发,不过这些一般与具体项目无关,可以在公司内部不同的项目之间共享.其实Jakarta Commons提供的功能一般可以使用在该层.最上层才是我们的具体业务模块.见下图:2.5层模式实现讨论为把任务分组成层

15、而定义抽象准则。根据抽象准则定义抽象层数。给每个层命名并指定它们的任务。指定服务细化分层为每个层指定一个接口。构建独立层。指定相邻层间的通信(或者调用)Petstore的层架构模式3.1 PetStore概述PetStore是Sun公司在J2EE平台上开发的一个应用样例,是Java软件在J2EE的蓝图程序,它示范了如何利用J2EE1.3平台的性能去开发灵活、可升级的分布式平台企业应用系统。PetStore是一个运行在Web上的,为网络客户提供宠物信息浏览、网上订单和管理等功能的网上宠物店,在技术上使用了J2EE中的大部分企业组件和优秀的设计模式,提供了一套有高灵活性扩展性和可升级的完善J2EE

16、开发框架.PetStore共有4个子系统组成:petstore Web Site该部分是petstore中的核心,客户登录系统进行选择,定购,提交定单等。petstore admin该部分是系统的管理功能Order processing center定单调度中心,对客户提交的定单进行处理PetStore supplier为产品供应者提供的维护画面在这里主要以WebSite为主进行分析(以下petstore均指该子系统),它是怎样进行分层处理的.3.2 Petstore体系架构我们按照层的架构模式进行分析,主要从Tiers和layer角度进行考虑.3.2.1 Layer层3.2.1.1概述Pet

17、Store是基于Web应用系统,它的客户端使用Broswer,然后是Web层的应用,业逻辑的层(由EJB实现),资源管理层(包括数据库,JMS,JavaMail等).具体又细分为以下几层.客户请求浏览页面,一般Web层的View由JSP组成,并且使用了大量Taglib把每个请求映射到某个HTMLAction类,来响应它.HTML Action类是一个标准的类,执行选择的HTML ActionWCC是由WebClientController完成(实现类为WebClientControllerImpl),它实际是SUN核心模式的Business Delegate层ECC是EJBClientCont

18、roller,它实际是核心模式Session FacadeEjbAction层执行EJB Action,传送event参数进来.EJB Action读event里面的参数,并且操纵EJB或者别的数据源来执行相应的商业操作.业务集成层,由通过DAO,EntityBean,JMS等访问相应的资源.具体的详细的结构如下:3.2.1.2实现在Web层它应用了著名的MVC模式,V由JSP来实现,为了业务逻辑和表示的分离,一般结合JSPTagLib.它把请求提交到相应的处理MainServelet,然后准发到RequestProcessor,他根据读取mappings.xml,的配置信息,生成相应的处理类

19、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,通过W

20、CC转发到后台的业务逻辑层.代码见下: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(Web

21、Keys.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);actio

22、n.doEnd(request,eventResponse);通过WCC把Event转发到EC,这里WC是delegeteBussiness层public class WebClientControllerImpl implements WebClientControllerpublic synchronized EventResponse handleEvent(Event ev)throws EventExceptionreturn ccEjb.processEvent(ev);EC是Facade层,如下,public class EJBClientControllerEJB implem

23、ents SessionBeanprotected StateMachine sm;public EventResponse processEvent(Event ev)throws EventExceptionreturn(sm.processEvent(ev);然后根据相应的Event的类型使用不同EJBAction来完成相应的业务逻辑,public EventResponse processEvent(Event ev)throws EventExceptionString eventName=ev.getEventName();String actionName=null;EventR

24、esponse response=null;if(eventName!=null)actionName=getActionName(eventName);EJBAction action=null;action=(EJBAction)Class.forName(actionName).newInstance();=null)action.init(this);/do the magic action.doStart();response=action.perform(ev);action.doEnd();return response;每个具体的EJBAction完成自己的具体的业物逻辑,如果

25、处理数据对象,则使用的相应的实体对象(data module).具体的层次调用过程,见下图:3.2.2 Tier层3.2.2.1概述PetStore Layer的设计分为以下几层,最底层为操作系统和网络服务,然后是基于J2EE服务器提供的系统服务层,上面是framework,Component层,包括WebApplicationFrameWork,以及commons业务逻辑,工具类等组成.最上层才是具体的业务实现模块具体见下图:3.2.2.2实现Petstore主要开发了两层,其中业务核心层,主要有几部分WAF(Web Application Framework)ApplicationCont

26、rol和Presentation(主要指JSP TagLib)Components(如各种实体对象如customer,Account,等)Business Logic Data各种常用的工具类层的业务逻辑包括以下几个部分:登录和注册,购物车模块,登录模块等我们以WAF为例介绍业务共同层的作用,开发者,可以基于这个框架,添加自己的代码和实现,下面红框内为WAF核心,如果增加新的业务功能只需增加相应的绿色部分.同时其他的components提供了对JMS,Mail等的处理.相关设计模式4.1外观模式(Facade)外观模式的意图就是为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个

27、高层接口,这个接口使得这一子系统更加容易使用。其实层模式的每层之间的经常使用Facade来进行封装成一致的接口供上层进行调用.如PetStore的EJB层的ECC就是Facade模式的应用.public interface EJBClientController extends javax.ejb.EJBObjectpublic EventResponse processEvent(Event ev)throws EventException,RemoteException;J2EE核心模式的SessionFacade模式定义了一类高层的业务组件,用于封装并集中较低层次业务组件之间的复杂交互。

28、它为客户端提供单一接口,用于访问应用程序或应用程序子集的功能。它还把较低层次的业务组件彼此分离开来,从而使设计更具灵活性和可理解性。通过远程接口的细粒度访问是不可取的,因为这会增加网络通信量和滞后时间。多个细粒度调用会产生许多网络通信,而且会降低性能,因为远程调用的滞后时间很高。引入Session Facade会减少网络通信和滞后时间,因为对细粒度业务对象的所有访问都是本地的。见下图:4.2中介模式(Mediator)外观模式的意图就是用一个中介对象来封装一系列的对象交互。中介模式使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。在层架构模式中有时会使用该设计模

29、式,使层之间的通信仅知道中介者并且只与通信,而不是层直接调用其他系统.使用中介模式如下:总结本文介绍了软件体系架构模式的层模式,分析了它的结构,特点,实现,以及优缺点.然后介绍遵循层模式的Architectural cube理论,结合J2EE的体系架构特点,剖析层模式是怎样应用的.最后以PetStore为例,简单阐述怎样应用该模式在实际J2EE系统之中.参考资料面向模式的软件体系结构卷1:模式系统Pattern-Oriented Software Architecture,Volume 1:A System of Patterns作者:Frank Buschmann,Regine meunier,Hans Rohnert,Peter Sommerlad,Michael Stal软件体系结构的原理,组成与应用万建成卢雷Take a3-D Approach to Architecture Design SUN JOURNAL Volume 5No.1 Java Pet Store Sample A

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1