(精品)1.软件架构概念与思想.ppt

上传人:hwp****526 文档编号:85522817 上传时间:2023-04-11 格式:PPT 页数:109 大小:3.24MB
返回 下载 相关 举报
(精品)1.软件架构概念与思想.ppt_第1页
第1页 / 共109页
(精品)1.软件架构概念与思想.ppt_第2页
第2页 / 共109页
点击查看更多>>
资源描述

《(精品)1.软件架构概念与思想.ppt》由会员分享,可在线阅读,更多相关《(精品)1.软件架构概念与思想.ppt(109页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、软件架构设计本课件内容参考了温昱演讲内容及中山大学王建民教授课件,谨表感谢!第一部分 软件架构概念与思想内容提要n架构的基本概念n子系统、框架和架构概念及关系n软件架构在不同情况下的作用深入理解软件架构概念结合实践:子系统和框架在架构设计中的作用软件架构的应用场景单个产品开发产品线开发软件维护架构重构第一章第二章第三章3软件架构设计V2012第一章 解析软件架构概念为什么要有软件架构nHofmeister定义:q软件体系结构是:提供一个设计计划-系统蓝图,即是一个有助于管理系统复杂性的概述。软件体系结构的目的不仅仅是向别人描述一些重要的方面,而且还要向架构师展示这些方面,以便于架构师能推敲他们

2、的设计n软件体系结构的一些用途:q对系统的修改维护;q测试q保证体系结构的属性,可测试性,可靠性,可用性,可维护性,及性能q需求验证q项目管理q系统操作q培训5软件架构设计V2012为什么要有软件体系结构n随着软件系统规模越来越大、越来越复杂,整个系统的结构和规格说明显得越来越重要n对于大规模的复杂软件系统,总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多n对软件体系结构的系统、深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径6软件架构设计V2012软件架构概念的分类n业界中的软件架构,定义归结而言可分为:q组成派和决策派两大流派7软件架构

3、设计V2012决策派nBooch、Rumbaugh和Jacobson的定义q架构是一系列重要决策的集合,这些决策与以下内容有关:软件的组织,构成系统的元素及其接口的选择,这些元素在相互协作中明确表现出的行为,这些结构元素和行为元素进一步组合所构成的更大规模的子系统,以及指导这一组织-包括这些元素及其接口、它们的协作和它们的组合-架构风格nEoin Woods的观点q软件架构是一系列设计决策,如果作了不正确的决策,你的项目可能最终会被取消8软件架构设计V2012决策派n软件架构包含了关于以下问题的重要决策:q软件系统的组织;q选择组成系统的结构元素和它们之间的接口,以及当这些元素相互协作时所体现

4、的行为;q如何组合这些些元素,使它们逐渐合成为更大的子系统;q用于指导这个系统组织的架构风格;q这些元素以及它们的接口、协作和组合。n软件架构是在一些重要方面所作出的决策的集合q关注架构实践中的主体人,以人的决策为描述对象q归纳了架构决策的类型,指出架构决策不仅包括关于软件系统的组织、元素、子系统和架构风格等几类决策,还包括关于众多非功能需求的决策9软件架构设计V2012组成派nGarlan和Shaw的定义q架构包括组件、连接件和约束三大要素。组件可以是一组代码(例如程序模块),也可以是独立的程序(例如数据库服务器)。连接件可以是过程调用、管道和消息等,用于表示组件之间的相互关系。“约束”一般

5、为组件连接时的条件nPerry和Wolf的定义q软件架构是一组具有特定形式的架构元素,这些元素分为三类:负责完成数据加工的处理元素、作为被加工信息的数据元素及用于把架构的不同部分组合在一起的连接元素10软件架构设计V2012组成派(续)nBoehm的定义q软件架构包括系统组件、连接件和约束的集合,反应不同涉众需求的集合,以及原理的集合。其中的原理,用于说明由组件、连接件和约束所定义的系统在实现时,是如何满足不同涉众需求的nIEEE的定义q架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导上述内容设计与演化的原理nBass(SEI)的定义q某个软件或计算机

6、系统的软件架构是该系统的一个或多个结构,每个结构均由软件元素、这些元素的外部可见属性、这些元素之间的关系组成11软件架构设计V2012组成派nMary Shaw:软件系统的架构将系统描述为计算组件及组件之间的交互n“组成派”软件架构概念有如下两个显著特点:q关注架构实践中的客体软件,以软件本身为描述对象q分析了软件的组成,即软件由承担不同计算任务的组件组成,这些组件通过相互交互完成更高层次的计算12软件架构设计V2012观点总结n组成派的观点更关注软件,倾向于“组件+交互”的思想n决策派的观点更关注人,倾向于重大决策集合的思想,除了结构和行为,还关注一些非功能的因素13软件架构设计V2012软

7、件架构关注分割与交互n“软件系统的架构将系统描述为计算组件及组件之间的交互”,Shaw的这个定义从“软件组成”角度解析了软件架构的要素:组件及组件之间的交互。nShaw的架构定义高度抽象地将软件架构概括为“组件+交互”,以大家熟悉的MVC架构为例进行说明ModelControllerView创建调用服务读取通知14软件架构设计V2012软件架构是一系列有层次性的决策n软件架构可以视为一系列重要决策的集合。架构决策还是分层次依次展开的q首先,伴随着对软件系统的依次分解,软件架构师应当不断作出决策,例如需要划分成哪些块,每个模块的职责为何,每个模块的接口如何定义,模块间采用何种交互机制,如何满足约

8、束和质量属性的需求,如何适应可能发生的变化等。n以一个硬件设备调试系统为例。软件架构师通过理解需求,对该设备调试系统应完成的主要目标有了全局的把握q之后,软件架构师必须规划整个系统的具体组成q设备调试系统的桌面应用部分是一个复杂的应用程序,还应当由软件架构师来负责该应用的架构设计15软件架构设计V2012软件架构是一系列有层次性的决策n因此:n软件架构师需要作出的一系列重要设计决策,是伴随着对软件系统的层层分解依次展开的q例如,不将整个设备调试系统分为桌面部分和嵌入式部分,也就无从将桌面部分进一步分离成应用层和通讯层n其次,“架构决策是分层次依次展开的”还表现在:决策制定的顺序往往是先制定技术

9、无关的决策,后制定技术相关的决策,后者在前者的指导下进行16软件架构设计V2012PM Tool案例:领会架构概念nPM Tool是一个项目管理系统,提供项目计划、任务管理和资源管理等功能q需求:查看甘特图q用户要求“能够以甘特图方式查看任务的起始!时间、结束时间、任务承担者等信息”17软件架构设计V2012PM Tool案例:领会架构概念n任务是如何计划的?n又具体分配给哪些项目成员?n这些信息和PM Tool采用何种方式来展现应当没有关系n采用MVC架构,将业务逻辑和展现逻辑分开,如图1所示:18软件架构设计V2012PM Tool案例:领会架构概念n“甘特图绘制包”:自行开发 or 采用

10、的第三方SDKn 分析要素:q用户不关心“甘特图绘制包”的问题,他们只在乎自己的需求是否得到了满足q项目工期很紧,自行开发“甘特图绘制包”势必增加其他工作的压力q短期内决定采用的第三方“甘特图绘制包”可能并不是最优的,所以并不希望PM Tool”绑死”在特定“甘特图绘制包”上19软件架构设计V2012PM Tool案例:领会架构概念n基于以上分析,架构师会决定:采用第三方SDK,但会自主定义“甘特图绘制接口”将SDK隔离。如图所示:20软件架构设计V2012PM Tool案例:领会架构概念n以上案例从组成派的观点看,业务层和展示层即组件,交互则体现在读取数据上n这里,我们主要从决策派的角度看以

11、上实例所体现的架构思想n在软件架构中的设计决策是如何支持“使用、功能性、性能、弹性、重用、可理解性、经济和技术的限制及权衡,以及美学等”非功能需求的21软件架构设计V2012PM Tool案例:领会架构概念n以“弹性”为例,为了防止PM Tool”绑死”在特定甘特图绘制包上,架构设计之时作了如下决策:引入自主定义的GanttChart接口,让实现该接口的GanttChartImpl转而调用第三方SDKn这样一来,架构就有了弹性当发现功能更强大的甘特图程序包时(或决定直接调用Java 2D自行开发甘特图绘制部分时),可以方便地仅更改GanttChartImpl,而其他组件不用更改(如图3所示)2

12、2软件架构设计V2012PM Tool案例:领会架构概念23软件架构设计V2012重要结论n组成派和决策派软件架构概念并不矛盾,它们只不过是所站的角度不同罢了n在具体的软件架构实践中,总是同时体现着这两“派”的架构概念24软件架构设计V2012总结与强调n将软件架构的概念总体上分为组成派和决策派,有利于我们理解软件架构概念的精髓n两个架构概念流派虽然角度不同,但却相辅相成。我们既应从“架构=组件+交互”的观点中获益,又应运用“架构=重要决策集”的实践经验,这一点对于软件业界的实践者(而不仅仅是理论研究者)尤其重要25软件架构设计V2012第二章 子系统、框架与架构子系统、框架与架构n有两个概念

13、和软件架构的基本概念是相伴相生的,特别是在实践中,它们总是在软件架构设计过程中出现子系统和框架27软件架构设计V2012子系统、框架与架构n子系统q子系统是随着软件复杂性的增长而日渐重要的一个概念,它和软件架构密切相关q软件系统的规模越来越大,所有软件系统都会被划分为多个模块或子系统进行开发q当子系统也足够复杂时,子系统本身的开发也需要经过架构设计这关q另一方面,系统整合的趋势日渐强劲,对于大型企业来讲,直接规划近一二十年的综合信息系统方案(它是多个相关软件系统组成的“超系统”或称“系统的系统”)也不鲜见。于是,软件架构师也应了解软件架构的层次(如软件超系统的架构、软件系统架构、软件子系统架构

14、等)以及不同层次的架构模式(如SOA和MVC就处于不同的层次上)28软件架构设计V2012运用架构模式n框架q当前,基于框架的开发堪称一种文化。为了提高软件开发的“起点”,以加快开发速度,提高产品质量,基于框架进行开发已成为了一种普遍现象。一个项目采用一个或多个第三方框架是很常见的事情q例如Spring、Structs、Swing、.NET和MFC等都是流行或曾经流行的框架,不一而足29软件架构设计V20122.1子系统和框架在架构设计中的地位n关注点分离之道n通过职责划分来分离关注点q面向对象设计的关键所在,就是职责的识别和分配.每个功能的完成,都是通过一系列职责组成的“协作链条”完成的;当

15、不同职责被合理分离之后,为了实现新的功能只需要构造新的“协作链条”,而需求变更也往往只会影响到少数职责的定义和实现q无论是对象、模块,还是子系统,它们所承担的职责都应该具有高内聚性,否则对象之间的松耦合性就失去了基础根据职责分离关注点、根据通用性分离关注点、根据不同粒度级别分离关注点是3种位于不同“维度”的思维方式30软件架构设计V20122.1子系统和框架在架构设计中的地位n关注点分离之道n利用软件系统各部分的通用性的不同进行关注点分离q不同的通用程度意味着变化的可能性不同,将通用性不同的部分分离有利于通用部分的重用,也便于对专用部分进行修改。q广为人知的框架技术可以用于分离通用部分,而元模

16、型驱动方法是另一种分离通用性部分的技术根据职责分离关注点、根据通用性分离关注点、根据不同粒度级别分离关注点是3种位于不同“维度”的思维方式31软件架构设计V20122.1子系统和框架在架构设计中的地位n关注点分离之道n考虑大粒度的子系统,而暂时忽略子系统是如何通过更小粒度的模块和类组成的q在实际中,软件架构师常常将系统划分成一组子系统,并为子系统定义明确的接口,其中的细节将随其后的开发工作慢慢展开。这样做可以避免陷入过多的细节当中根据职责分离关注点、根据通用性分离关注点、根据不同粒度级别分离关注点是3种位于不同“维度”的思维方式32软件架构设计V2012子系统和框架在架构设计中的地位33软件架

17、构设计V2012子系统和框架在架构设计中的地位n软件界是新名词的制造工厂,但在背后,深藏着的是相对稳定的“解决之道”,根据上面谈的关注点的分离,归纳一些流行技术所处的位置34软件架构设计V2012子系统和框架在架构设计中的地位n无论是架构模式还是设计模式,重点关注的都是如何提供一个“协作模型”,这个协作模型通过明确协作中不同角色所担负的职责,达到“为特定上下文中的问题提供解决方案”的目的n现在的软件开发越来越倚重框架的使用,因此选择何种框架,每个框架在整个架构中处在什么位置,都成为软件架构设计的重要环节nIvar Jacobson曾指出:“设计应该把类库和框架的用法反映出来”n框架技术有助于把

18、通用关注点和专用关注点分离开来,结果是带来了更好的易修改性和可重用性35软件架构设计V20122.2子系统与软件架构n了解子系统与软件架构的关系有两方面的意义q从解决问题的角度而言,了解子系统与软件架构的关系,有助于避免软件架构设计不足的问题;软件架构要设计到什么程度?为了使软件架构能够为软件开发提供足够的指导和限制,软件架构师应该为复杂的子系统设计架构,而不是保持其黑盒子的状态止步不前q从经验的运用角度而言,了解子系统与软件架构的关系,有助于充分利用架构设计技能。比如,有经验的软件架构师都知道,分层、MVC和管道过滤器等架构模式很少单独使用,而是结合使用或根据子系统的层次划分嵌套使用,图6,

19、就是一个分层架构模式和MVC架构模式结合使用的例子36软件架构设计V2012子系统与软件架构37软件架构设计V2012不同粒度的软件单元n软件单元是如何组成粒度更大的整体的?n在具体的架构实践中,一个软件系统往往首先分解成几个子系统,子系统又继续分解.q例如,一个系统,由3个子系统组成;每个子系统,又由组成它的多个类来实现n子系统可以分配到开发组,每个类可以分配给具体的工程师实现38软件架构设计V2012不同粒度的软件单元n作为架构师,要考虑“软件单元如何组成粒度更大的整体”的问题n更广泛而言,构成软件的单元具有不同的粒度级别n对面向对象软件开发而言,常有这些软件单元:q类:粒度最小的单元q模

20、块:几个类紧密协作形成q子系统:完成相对独立的功能的多个模块构成q系统:多个子系统相互配合以满足完整应用需求q集成系统:大型企业往往使用多套系统,由多套系系统通过互操作形成n以上都是软件单元的具体形态,只不过粒度不同n软件系统越复杂,不同粒度的分解层次就越多39软件架构设计V2012子系统也有架构n所谓系统,是指由多个元素组成的逻辑实体,它完成一组特定的目标或担负一定的职责n系统可以仅包含软件,也可以仅包含硬件,或者是两者都包含n子系统是特殊的系统-只不过在特定的上下文中,这个系统作为更大的系统的一部分出现n系统需要架构设计,而子系统如果足够复杂,则也需要架构设计40软件架构设计V2012子系

21、统不同,架构不同n不同类型的软件系统需要不同的软件架构设计n有时,一个系统的不同子系统也应当有不同的软件架构n例如,目前已经有很多架构模式,但是这些架构模式的运用并不是“放之各子系统而皆准”的,需要根据具体的子系统选择合适的架构模式41软件架构设计V2012不同实践者眼中的粒度n粒度具有相对性,即同一软件单元,在不同场景下我们会以不同的粒度看待n是复杂事物还是简单事物,要视对谁而言n因此,应当立足实践对待软件单元的粒度问题q当进行高一级的架构设计时,子系统就是一个原子单元、一个黑盒q当进行子系统本身的设计时,它才变成一个结构复杂的白盒q第三方组件一般被看作原子单元,只需关心其对外接口即可此时我

22、们是使用它的服务q但当使用来自第三方的框架作为某一级系统或子系统的架构基础时,则应当仔细研究其结构这是因为此时是使用它的结构而不仅仅是服务42软件架构设计V20122.3框架与软件架构n框架的概念q框架是可以通过某种回调机制进行扩展的软件系统或子系统的半成品q框架与所有软件组件的本质区别在于:框架是半成品q框架的智慧在于:为了追求重用所带来的价值量最大化,将容易变化的部分封装成扩展点,并辅以回调机制将它们纳入框架的控制范围之内,从而在兼顾定制开销的同时使被重用的设计成果最多43软件架构设计V2012框架的概念nFrank Buschmann等人在面向模式的软件体系结构(第一卷)把框架定义为q框

23、架是一个可实例化的、部分完成的软件系统或子系统,它为一组系统或子系统定义了架构,并提供了构造系统的基本构造块,还为实现特定功能定义了可调整点。在面向对象环境中,框架由抽象类和具体类组成44软件架构设计V2012框架的概念nErich Gamma等人在设计模式中把框架定义为:q框架是一组相互协作的类,形成某类软件的一个可复用设计。框架将设计划分为一组抽象类,并定义它们各自的责任和相互之间的协作,以此来指导体系结构级的设计q开发者通过继承框架类中的类和组合其实例来定制该框架以生成特定的应用45软件架构设计V2012架构和框架的区别n框架是软件,架构不是软件n框架是一种特殊的软件,它并不能提供完整无

24、缺的解决方案,而是为你构建解决方案提供良好的基础n框架是半成品,典型地,框架是系统或子系统的半成品;框架中的服务可以被最终应用系统直接调用,而框架中的扩展点是供应用开发人员定制的“可变化点”46软件架构设计V2012架构和框架的区别n软件架构不是软件,而是关于软件如何设计的重要决策n软件架构决策涉及到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等n经过完整的开发过程之后,这些架构决策将体现在最终开发出的软件系统中n引入软件框架之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中q软件架构是比具体代码高一个抽象层次的概念q架构势必被代码所体现和遵循,但任

25、何一段具体的代码都代表不了架构47软件架构设计V2012架构和框架的联系n框架技术和架构技术的出现,都是为了解决软件系统日益复杂所带来的困难而采取“分而治之”思维的结果-先大局后局部,就出现了架构;先通用后专用,就出现了框架n架构是问题的抽象解决方案,它关注大局而忽略细节;而框架是通用半成品,还必须根据具体需求进一步定制开发才能变成应用系统48软件架构设计V2012架构和框架的联系n简而言之,框架和架构的关系可以总结为两句话:q为了尽早验证架构设计,或者出于支持产品线开发的目的,可以将关键的通用机制甚至整个架构以框架的方式进行实现q业界(及公司内部)可能存在大量可供重用的框架,这些框架或者已经

26、实现了软件架构所需的重要架构机制,或者为未来系统的某个子系统提供了可扩展的半成品,所以最终的软件架构可以借助这些框架来构造49软件架构设计V2012框架也有架构n框架作为软件系统或子系统的半成品,其设计开发过程从总体上来说和系统开发非常类似n框架也是通过架构设计、详细设计、实现和测试开发出来的50软件架构设计V2012总结与强调n本章揭示了软件系统是由不同粒度的软件单元层层递归构成的这一事实,而我们在实践中又必须注意,同一个软件单元在不同实践者眼中的粒度可能不同。只有懂得了这一点,软件架构师才能够游刃有余地根据情况忽略应该被忽略的细节,抓住设计大局n软件子系统也可能需要架构设计;而即使是同一系

27、统内部,子系统不同,所采用的架构也有可能不同。这在实践中屡见不鲜n框架和架构既有区别又有联系。框架也需要架构设计;反过来,可以通过架构框架化达到“架构重用”的目的51软件架构设计V2012第三章 软件架构的作用软件架构的意义n良好的架构对软件系统在软件生命期中的各个阶段都有重要意义,从下列几个方面说明软件架构的重要性:n涉众之间的交流:q软件架构是一种常见的对系统的抽象,绝大多数系统的涉众都以此作为彼此理解、协商、达成共识或相互沟通的基础n早期的设计决策:q软件架构是所开发系统的最早设计决策的体现,而这些决策对系统得后续开发、部署和维护具有重要的影响。大量实践统计表明:大规模系统软件开发中的7

28、0%的错误是由需求和软件设计阶段引入的n可传递的系统抽象:q软件架构是关于系统构造及系统各元素工作机制的相对较小、却能突出反应问题的模型。这种模型可以在多个系统之间传递,特别是可以应用到具有相似质量属性和功能需求的系统中,并能够促进大规模的重用53软件架构设计V2012软件架构的作用n软件架构在不同实践场景下发挥不同的作用:n对新产品开发的作用:q软件架构设计就是要完成从面向业务到面向技术的转换,在鸿沟上架起一座桥梁,其作用包括以下几个方面:n上承业务目标n下接技术决策n控制复杂性n组织开发n利用迭代开发和增量交付,提高质量n非功能需求更大程度上依赖架构设计而非编程实现54软件架构设计V201

29、2软件架构的作用n对软件产品线开发的作用:q软件产品线是指具有一组可管理的、公共特性的、软件密集性系统的集合,这些系统满足特定的市场需求或任务需求,并且按预定义的方式从一个公共的核心资产集开发得到q软件产品线架构(平台)是针对一个公司或组织内的一系列产品而设计的通用架构;其作用包括以下几个方面:n固化核心知识n提供可重用资产n缩短推出产品的周期n降低开发和维护总成本n提高产品质量n支持批量定制55软件架构设计V2012软件架构的作用n对软件维护的作用:q软件架构是软件维护的基础,“修改性维护”,“增强性维护”n对软件架构重构的作用:q指对软件架构进行比较大的修改和调整,使它适应新需求及开发和维

30、护的需要56软件架构设计V2012总结与强调n需分门别类地掌握软件架构在下列工作中的意义:q产品开发;q软件产品线开发:q软件维护;q软件升级。57软件架构设计V2012软件架构实例J2EE架构.net架构Web BrowserWeb ServerFile SystemHTTP RequestHTTP ResponseClientNetworkServerWeb Application Evolution StaticnOrganizations want to make their information available to as many people in the world as

31、 possiblenThis can be achieved by using the Web,delivering the information as static HTML pages59软件架构设计V2012Web Browser with JVMWeb ServerFile SystemHTTP RequestHTTP ResponseClientNetworkServerWeb Application Evolution AppletsnWith static HTML,users see passive page presentations which are always th

32、e samenPresentation can be improved with Java applets or other client-side programs60软件架构设计V2012Web Application Evolution ServletsnApplets cannot access data on back-end systemsnA Web container can provide server-side components(such as servlets)to generate dynamic contentNetworkWeb BrowserWeb Serve

33、rFile SystemHTTP RequestClientServerWeb Server Plug-inWeb ContainerRequests for dynamic resourcesRequests for static resourcesHTTP ResponseDynamicresponse61软件架构设计V2012RequestResponseWeb ContainerServletJavaServer PageJavaBeanservice(req,res)methods()methods()forward(req,res)RequestDispatcherservice(

34、req,res)Web Application Evolution JSP PagesnServlets give poor separation between business logic and presentation logicnUse JavaServer Pages and JavaBeans to improve separation62软件架构设计V2012Web Application Evolution EJBsnEJBs:qAre available remotely over the networkqEncapsulate business rules,applica

35、tion-specific logic,and access to dataqCan be used by many different types of application concurrentlyqRepresent a central repository of business logicWebB r o w s e rJavaApplicationHTTPS e r v e rEJBContainerWebContainer63软件架构设计V2012Web Application Evolution ScalabilitynBusiness requirements often

36、involve high availabilitynImproved performance may be required as business growsnBoth these requirements can be achieved through scalingqServers can provide redundancy in the systemqBy sharing the load between servers,performance can be enhancedWebBrowserH T T PS e r v e rEJBContainerWebContainerWeb

37、ContainerEJBContainer64软件架构设计V2012Java History 1995-1996nMarch 23,1995:Java is born.Father:James Goslings,Mother:Sun Microsystems.nMay 23,1995:Java Technology officially announced in SunWorld.nJanuary 23,1996:JDK 1.0 release daynMay 29,1996:First JavaOne developer conference,JavaBeans,Servlets and o

38、ther technologies announced.nDecember 9,1996:JDK 1.1 beta software releasednFebruary 18,1997:JDK 1.1 released.65软件架构设计V2012Java History 1997-2001nMarch 4,1997:Enterprise JavaBeans(EJB)technology announced Java Foundation Classes(JFC)technology included in Java platformnJune 2,1999:Java Server Pages(

39、JSP)technology unveilednJune 15,1999:Three editions of Java platform:J2SE,J2EE,J2ME announcednApril 2001:Java 2 Platform,Enterprise Edition(J2EE)SDK 1.3 beta released(EJB 2.0,JSP 1.2,servlet 2.3)66软件架构设计V2012Java History 2002-?nJanuary 28,2002:Java Web Services Developer Pack(WSDP),Early Access Rele

40、ase 1nDecember 2002:J2EE 1.4 Beta releasednOctober 1,2004:Tiger(Java 5.0)released!67软件架构设计V2012J2EE组成和结构nJava 2 Platform Enterprise Edition 为开发、部署和管理以服务器为中心的企业应用提供了解决方案。qJ2EE is End-to-End Solutionn企业应用的特点q用户业务数据q物理分布系统复杂处理功能多q安全可靠性可管理68软件架构设计V2012The Model-View-Controller PatternnModel-View-Control

41、ler(MVC)is a design patternqVery widely used and regarded as a core concept in J2EE developmentqVarious practical benefits(covered in more detail later)nPromotes code reusenReduces development timeqThe modelnRepresents the underlying data and business logic in one placenContains no information about

42、 the user interfaceqThe viewnThe user interface things the user can see and respond tonRepresent a window into the model there can be many of theseqThe controllernConnects the model and the viewnUsed to communicate between the model and viewnA fourth layer persistence is often added to the pattern69

43、软件架构设计V2012J2EE的三层结构ClientClientClientClientClientClientTierEnterprise Information TierMiddleTierEnterprise Information Systems(EIS):RelationalDatabase,Legacy Applications,ERP SystemsEnterprise Enterprise JavaBeansJavaBeansEnterprise Enterprise JavaBeansJavaBeansOther Services:Other Services:JNDI,JM

44、S,JNDI,JMS,JavaMailJavaMailJ2EEApplicationServerWeb Web ServerServerJSP,JSP,ServletsServlets FirewallHTML/XML运行于客运行于客户机的客户机的客户层组件户层组件运行于运行于J2EE服务器上的服务器上的网络层组件网络层组件运行在运行在J2EE服务服务器上的逻辑层组件器上的逻辑层组件70软件架构设计V2012J2EE客户端n网络浏览器:网络客户端又称为瘦客户。q动态网页包含各种标记语言(HTML,XML等)q小程序:网页可以包含小程序。n应用客户端:J2EE应用客户端运行在客户上,它为用户处理

45、任务提供了比标记语言丰富的接口。71软件架构设计V2012网络组件nJ2EE网络组件可以是servlet或jsp。qServlet是java类,它能动态处理请求及响应。qJsp页面是基于文档的,能像servlet一样执行。n网络层可以包含JavaBean组件来管理用户输入、发送输入到逻辑层的EJB以处理。n静态HTML页面及applets域网络组件绑在一起,但J2EE规范没有认为这些为网络组件。72软件架构设计V2012What is Servlet?n扩展了HTTP服务器功能的Java objectsn能够动态产生(页面)内容nBetter alternative to CGI,NSAPI,

46、ISAPI,etc.qEfficientqPlatform and server independentqSession management73软件架构设计V2012What is JSP Technology?nJavaServer Pagesq基于Servlet技术qExtensible via custom tagsqEnables separation of business logic from presentationnBusiness logic is implemented as Java Beans or custom tagsnPresentation is in the

47、 form of HTML or XML/XSLTqJSP使软件开发者可以响应客户端请求动态生成HTML、XML或其他格式的Web网页。JSP技术以Java语言作为脚本语言,JSP网页为整个服务器端的Java库单元提供了一个接口来服务于HTTP的应用程序74软件架构设计V2012业务逻辑组件n业务逻辑代码是解决特定业务领域的需求的程序代码,在J2EE中,通常指EJB。75软件架构设计V2012What is EJB Technology?nJ2EE的基石n服务器端的组件n共有三种EJB:q会话(session)bean:代表短暂的与客户的会话,当客户结束执行时,会话bean及它的数据就消失了q

48、实体(entity)bean:实体bean代表存储在数据库的表,如果客户结束程序或服务器关闭,潜在的服务方法会将数据存储。q消息驱动(message-driven)bean。76软件架构设计V2012J2EE容器n瘦客户端的多层应用程序总是很难开发,因为它包括各个层的事务处理、状态管理、多线程、资源池和其他复杂底层细节等等的错综复杂的编码。n基于组件和平台独立的J2EE平台使J2EE应用程序容易开发q商业逻辑被封装在可重用的组件(EJB)中。qJ2EE服务器以容器的形式为所有组件提供底层服务,因此你不必再为这些底层服务二伤脑筋,而可以专注于解决商业问题。77软件架构设计V2012Contain

49、ers in JavanEJB容器:管理J2EE应用程序中企业Bean的运行。企业Bean和它们的容器在J2EE服务其中运行nWeb容器:管理J2EE应用程序中JSP页面和Servlet组件的运行。Web组件和容器也在J2EE服务其中运行nApplication client container(应用程序客户端容器):管理应用程序客户端组件的运行。应用程序客户端和它的容器运行在客户机nApplet container(Applet容器):管理Applet的运行。由在客户端运行的浏览器和Java插件组成78软件架构设计V2012J2EE Server(J2EE服务器)nJ2EE产品的运行时服务部

50、分。一个J2EE服务器提供EJB容器(EJB Container)和Web容器(Web Container)79软件架构设计V2012JNDIJ2SEJMSRMI/IIOPJDBCDatabaseDatabaseAppAppClientClientApp Client App Client ContainerContainerHTTP/HTTP/HTTPSHTTPSJ2SERMIRMIJ2SEJNDIJMSRMI/IIOPJDBCJTAJavaMailJAFJNDIJMSRMI/IIOPJDBCJTAJavaMailJAFHTTP/HTTP/HTTPSHTTPSApplet Container

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁