资源描述
第三章 应用软件集成体系结构l概述 l客户机/服务器模式l分布式计算l软件重用技术l中间件技术lJ2EE应用架构l.NET应用架构l基于组件的软件开发6/18/20241信息系统集成第三章 应用软件集成体系结构概述 7/28/20231信息3.1 概述l软件应用架构 20世纪60年代到70年代,软件危机使软件成本日益增长,开发速度难以控制,质量无法保证,软件的维护困难等。-软件工程 软件工程发展初期,设计的重点是数据结构和算法的选择上。随着规模和复杂度的变化,人们开始认识到软件架构的重要性。l软件架构的定义 将软件系统划分成多个模块,明确各模块之间的相互作用,组合起来实现系统的全部特征,就是系统的架构。软件架构为软件系统提供了一个结构、行为和属性的高级抽象,并由构成系统的元素的描述及元素的相互作用、元素集成的模式,以及这些模式的约束组成。6/18/20242信息系统集成3.1 概述软件应用架构7/28/20232信息系统集成3.1 概述l软件架构的作用l软件架构是系统环境中的一个高层概念,每个系统都有一个架构。架构是用于表达整个系统的结构和行为的模型,表达系统如何满足其环境上下文的要求,并表示主要的系统构件、其交互和依赖关系,以及其操作所需满足的约束。l软件架构模型l研究软件架构的首要问题是如何表示软件架构,即如何对软件架构建模。根据建模角度(侧重点)不同,通常将软件架构的模型分为5种:结构模型、框架模型、动态模型、过程模型和功能模型。l最常用的是结构模型和动态模型。6/18/20243信息系统集成3.1 概述软件架构的作用7/28/20233信息系统集成3.1 概述l应用软件的计算模式l应用系统在某种计算问题的解决过程中,采用的对计算资源的组织、调度上的某种有效方法。l计算资源是参与计算过程的所有资源:处理器、存储器、通信线路、程序和数据等。l从发展历程看,应用系统的计算模式主要包括集中式和分布式计算。l20世纪80年代之前,人们深入思考的是如何充分利用计算资源。l近年来,网络技术的发展使得分布式计算技术成为核心技术。l工业化分布式计算技术的发展已经经历了两代:第一代分布式计算技术是以支持信息共享为目标的面向过程的客户机/服务器技术;第二代分布计算技术是以面向对象为主要特征的分布式对象技术。l当前以Internet为平台的Agent计算、网格计算等分布式计算技术逐步深入的影响未来分布式计算技术的发展。6/18/20244信息系统集成3.1 概述应用软件的计算模式7/28/20234信息系统集3.2 客户机/服务器模式l两层C/S模式lC/S的核心特征是任务的分解,由不同的计算资源承担任务,通过协作完成任务。l两层C/S模式是最早使用的C/S模式。客户端操作系统客户端操作系统应用业务逻辑应用业务逻辑用户交互界面用户交互界面数据库数据库数据库管理系统数据库管理系统网络操作系统网络操作系统服务器客户机RequestResponse6/18/20245信息系统集成3.2 客户机/服务器模式两层C/S模式客户端操作系统应用业3.2 客户机/服务器模式lB/S结构lBrower/Server 浏览器/服务器模式数据库数据库数据库管理系统数据库管理系统网络操作系统网络操作系统服务数据库访问系统数据库访问系统Web支撑系统支撑系统网络操作系统网络操作系统Web服务客户操作系统客户操作系统浏览器浏览器客户机HTTP CGI TCP/IP IIOP Active XRequestRequestHTTPTCP/IP6/18/20246信息系统集成3.2 客户机/服务器模式B/S结构数据库数据库管理系统网络3.2 客户机/服务器模式l多层C/S结构lB/S模式在构造复杂应用系统时,利用CGI等技术开发部署很难提高系统运行效率。l现有的Web服务器支撑系统很难对各类中间件进行有效的管理和组织,需要专门针对中间件的支撑系统。l数据操纵的安全性很难保障。l应用系统被划分为:客户层、表示层、业务逻辑层(应用层)、数据管理层(数据层)。6/18/20247信息系统集成3.2 客户机/服务器模式多层C/S结构7/28/202373.2 客户机/服务器模式l多层C/S模式中,应用系统被划分为客户层:一般PC,通过浏览器与Web服务器联系,访问Web服务器资源。表示层:Web服务器,接受用户交互式操作,并将操作请求传递给应用服务器。业务逻辑层:应用服务支撑系统,分布式对象管理容器,接受Web服务器的请求,执行业务逻辑返回结果,与后台数据库绑定,一般将数据库资源映射为数据对象。数据管理层:数据库服务器。6/18/20248信息系统集成3.2 客户机/服务器模式多层C/S模式中,应用系统被划分为3.2 客户机/服务器模式l多层C/S结构的基本计算过程对多层C/S模式的支持规范主要有Sun的J2EE和微软的.NET。数据库数据库数据库管理系统数据库管理系统网络操作系统网络操作系统数据库服务器应用逻辑应用逻辑中间件管理容器中间件管理容器网络操作系统网络操作系统应用服务器客户操作系统客户操作系统浏览器浏览器客户机请求请求Web支撑系统支撑系统网络操作系统网络操作系统Web服务器服务服务6/18/20249信息系统集成3.2 客户机/服务器模式多层C/S结构的基本计算过程数据库3.3 分布式计算l移动Agentl20世纪90年代初由General Magic 公司在推出商业Telescript时提出的,主要思想在于:结合Agent技术和分布式计算技术,将服务请求Agent动态移到服务器端执行。使此Agent较少依赖网络传输,而直接面对要访问的服务器资源,降低了对网络带宽的依赖。l移动Agent不需要统一调度,由用户创建的Agent,用户可自行创建多个Agent,同时在一个或多个节点上运行,形成并行求解能力。l可自行决定何时中断任务,并将自己转移到另一台机器上。l具有自治性和智能路由的性能。6/18/202410信息系统集成3.3 分布式计算移动Agent7/28/202310信息系3.3 分布式计算l网格计算lGrid称为网格计算l思想在于:将闲置在Internet各处的MIPS捆绑在一起加以利用,以便用累积的计算能力来完成超级计算机的任务。l网格计算主要应用在大批量的小任务,如:声视频点播,具有突发的大量的资源需求,实时分布式仪表系统等。l目前对网格的一般理解是指把整个互联网或某个区域整合成统一的计算机系统。l网格的根本特征不在于规模,而是资源的广泛共享。6/18/202411信息系统集成3.3 分布式计算网格计算7/28/202311信息系统集成3.3 分布式计算l分布式对象技术l分布式技术的应用使得系统规模越来越大。l网络间的异构问题必须解决。l分布式系统的复杂性使得系统的可靠性降低。l分布式软件的开发和维护成本高昂。l通过结合面向对象技术,实现分布式软件的可移植性、互操作性、可靠性和可重用性。l屏蔽了不同系统间的差异和底层细节,减小分布式系统开发难度,提高分布式软件的性能。l目前主流的有:COM/DCOM、Java、COBRA6/18/202412信息系统集成3.3 分布式计算分布式对象技术7/28/202312信息系3.3 分布式计算l分布式对象技术l采用了面向对象技术中的封装性和继承性两大特点。所操作的对象通常称之为组件。客户客户stub线路协议客户端服务器服务器stub线路协议服务器端网络环境网络环境高层中层底层6/18/202413信息系统集成3.3 分布式计算分布式对象技术客户客户stub线路协议客户3.4 软件重用技术l软件重用概念l指在两次或多次不同的软件开发过程中重复使用相同或相近软件元素的过程。l软件元素包括:程序代码、测试用例、设计文档、设计过程、需求分析文档或领域知识。l将这种可重用的元素成为软构件,可重用的软件元素越大,重用的粒度越大。l基于构件的软件开发通常包括构件获取、构件分类和检索、构件评估、适应性修改,以及将现有的构件在新的语境下组装成新的系统的过程。l软件重用中的构件是指语义完整、语法正确和有可重用价值的单位软件,是软件重用过程中可以明确标识的元素。6/18/202414信息系统集成3.4 软件重用技术软件重用概念7/28/202314信息系3.4 软件重用技术l面向重用的软件开发l需考虑“使用重用的开发(Develop with reuse)”和“用于重用的开发(Develop for reuse)”。前者使用已有的构件进行软件开发;后者的目的是开发可重用的软件。l用户需根据应用领域的特点及相似性确定构件的可重用性。l一旦确定了重用价值,就可以将构件的设计通用化,然后将其加入到构件库。l整个软件的开发过程是构件的不断积累、不断完善的渐进过程。l在开发的过程中对构件修改、或替代原有构件。6/18/202415信息系统集成3.4 软件重用技术面向重用的软件开发7/28/2023153.4 软件重用技术l面向重用的软件开发l以面向对象方法为基础,增强软件的重用性。l开发过程中可重用的构件,可以使面向对象方法中的对象或对象的集合,也可以使非面向对象方法中的可重用构件。领域分析软件开发理解构件功能检索所需构件确认构件的重要性可重用构件库领域知识用户需求目标软件6/18/202416信息系统集成3.4 软件重用技术面向重用的软件开发领域分析软件开发理解构3.5 中间件技术l中间件概念l中间件(Middleware)是位于硬件、操作系统等平台和应用之间的通用服务。中间件(系统服务)应用程序1应用程序2应用程序3操作系统/硬件平台1操作系统/硬件平台26/18/202417信息系统集成3.5 中间件技术中间件概念中间件(系统服务)应用程序1应用3.5 中间件技术l中间件的目的l实现应用与平台的无关性,满足大量应用的需要。l中间件的作用l屏蔽操作系统和网络协议的差异,为应用程序提供多种通信机制满足不同领域的应用需要。l中间件服务所遵循的原则离实际还有很大的距离。多数中间件使用专有的协议,使应用只能构件在单一的厂家的产品之上。l有些中间件只提供某些平台的实现,限制了应用在异构系统之间的移植。6/18/202418信息系统集成3.5 中间件技术中间件的目的7/28/202318信息系统3.5 中间件技术l中间件的分类l数据库访问中间件l远程过程调用中间件l面向消息中间件l事务中间件l分布式对象中间件6/18/202419信息系统集成3.5 中间件技术中间件的分类7/28/202319信息系统3.5 中间件技术l数据库访问中间件通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源。典型的如:Windows下的ODBC和Java中的JDBCl远程过程调用中间件一个应用程序使用RPC来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。一个RPC应用分为两个部分:服务器和客户服务器提供一个或多个远程过程;客户向服务器发出远程调用。客户和服务器之间的网络通信和数据转换通过代理程序(stub 与 skeleton)完成,从而屏蔽了不同操作系统和网络协议。6/18/202420信息系统集成3.5 中间件技术数据库访问中间件7/28/202320信息3.5 中间件技术l面向消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并可基于数据通信进行分布系统的集成。典型的产品:IBM的MQSeries使用MOM,通信双方的程序可以在不同的时间运行,程序不在网络上直接通话。消息放入适当的队列,等待目标程序运行。避免了网络通信的复杂性。消息队列和网络通信的维护工作由MOM完成。6/18/202421信息系统集成3.5 中间件技术面向消息中间件7/28/202321信息系3.5 中间件技术l分布式对象中间件l采用分布式对象技术,结合面向对象技术实现。l对象请求代理(Object Request Broker,ORB)模型提供了一个通信框架,在异构的分布计算环境中透明地传递对象请求。lORB是一种对象总线,定义了异构环境下对象透明的发送请求和接受响应的基本机制,是建立对象之间客户/服务器关系的中间件。lORB使对象可以透明地向其他对象发出请求或接受其他对象的响应,这些对象可在本地也可远程lORB拦截请求调用,并负责找到可以实现请求的对象、传送参数、调用相应的方法、返回结果等。l客户不需要知道服务器的信息。6/18/202422信息系统集成3.5 中间件技术分布式对象中间件7/28/202322信息3.5 中间件技术l事务中间件(Transaction Processing Monitor)最早出现在大型机上,为其提供大规模事务处理的可靠运行环境。事务处理监控程序位于客户和服务器之间,完成事务管理与协调、负载平衡、失效恢复等任务。随着对象技术和事务技术的结合,出现了对象事务监控器,可保证分布式对象的事务完整性。事务中间件可以满足现代业务应用系统的12条基本原则:完整性、安全性、可伸缩性、可用性、可管理性、互操作性、适应性、易开发性、经济性、快速的响应时间、数据的可分布性、易用性。采用商业事务中间件的优势在于缩短产品投放市场所需的时间、节省应用开发费用、减少系统运行开销、简化应用集成、降低软件的维护费用等。6/18/202423信息系统集成3.5 中间件技术事务中间件(Transaction Pro3.5 中间件技术l构件技术与中间件l中间件作为存在于系统软件与应用之间的特殊层次,对典型的应用模式进行抽象,从而使应用软件开阿人员可以将精力更多地放在业务逻辑上,并按照标准形式进行开发,从而使软件架构的应用成为可能。l构件的使用对架构技术(即环境、基础设施、计算平台等)有极大的依赖性。只有在适当的架构中,软件才有可能被抽象成为构件。l中间件,从本质上说是对分布式应用的抽象,抛开了与应用相关的业务逻辑细节,保留了典型的分布交互模式的关键特征。经过抽象,对复杂的分布式系统进行提炼和必要的封装隔离后,以统一的形式呈现给应用。l中间件与架构是从两种不同的角度看待软件的中间层次,可以将中间件理解为架构或构建模型的具体实现,是构件存在的基础,中间件促进了软件的构件化。l中间件作为分布式计算平台,涉及各种不同的资源,包括各种操作系统、数据库、网络协议甚至语言,其目标是在分布的环境中统一使用这些资源。6/18/202424信息系统集成3.5 中间件技术构件技术与中间件7/28/202324信息3.5 中间件技术l应用服务器l应用服务器(Application Server)是企业极应用在Internet上迅速发展的条件下,出现的一种中间件技术。它可以处理客户和数据之间的交互操作,并提供一组前面提到的中间件服务,包括事务管理、ORB、MOM、系统安全、负载均衡及资源管理等。l应用服务器还提供了一个称为容器的管理环境,可以对应用中的组件进行配置和管理。l应用服务器在技术上并没有任何标准和规范是为某个商业性公司所独占,全部都基于Internet上的开放标准,因而具有极强的生命力。l使用应用服务器可以帮助企业构建一个基于Internet的电子商务系统,而且拥有很高的稳定性、可扩展性和安全性。l应用服务器向企业级用户提供了设计、开发、部署、运行和管理Internet电子商务应用系统的平台,适用于Internet上的电子商务应用。6/18/202425信息系统集成3.5 中间件技术应用服务器7/28/202325信息系统集3.5 中间件技术l应用服务器的优点在于:三层架构体系:适合Internet环境,使系统具有很强的可扩展性和可管理性。分布式环境:保证系统的稳定性,同时拥有较高的性能。面向对象的模块化构件设计:提高开发速度,降低开发成本。采用Java技术:完全跨平台,适合Internet需要,并获得大多数厂商的支持,可以保护用户的投资。应用服务器采用的三层(多层)架构,将应用逻辑单独作为一层,客户可以根据不同的应用逻辑专心设计该层。需要扩展业务时,只需专注于改进中间层的设计,使原系统能够平滑方便地升级。6/18/202426信息系统集成3.5 中间件技术应用服务器的优点在于:7/28/202323.6 J2EE应用架构lJ2EE(Java 2 Platform Enterprise Edition)l是Sun公司领导、各厂商共同制定并得到广泛认可的工业标准。lJ2EE将开发工作分为两类:业务逻辑开发和表示逻辑开发,其余的系统资源则由应用服务器自动处理,不必为中间层的资源和运行管理进行编码。将更多的开发精力集中在应用程序的业务逻辑和表示逻辑上,从而缩短企业的应用开发周期、有效保护企业的投资。6/18/202427信息系统集成3.6 J2EE应用架构J2EE(Java 2 Platfo3.6 J2EE应用架构lJ2ME(Java 2 Platform Micro Edition)Java2平台简化版,适合嵌入式系统开发。lJ2SE(Java 2 Platform Standard Edition)Java2平台标准版,是为Java Applet和应用程序提供的Java标准运行环境支持的平台,包括输入/输出和图形用户界面等。lJ2EE(Java 2 Platform Enterprise Edition)Java 2平台企业版,将Java企业级API捆绑在一起的成为Java语言进行服务器端的企业应用部署的开发平台。J2EE运行在J2SE之上。6/18/202428信息系统集成3.6 J2EE应用架构J2ME(Java 2 Platfo3.6 J2EE应用架构lJ2EE技术规范规范简称Java Message Service:Java消息服务,允许分布对象之间的异步通信JMSJava Mail:Java邮件,满足平台无关,协议无关方式的邮件发送Java MailJava Interface Definition Language:Java接口定义语言,是实现CORBA标准的模型,允许与其他语言的集成和CORBA标准服务的分布处理Java IDLRemote Method InvocationInternet Inter-ORB Protocol:远程方法调用Internet Inter-ORB协议,是RMI的可移植性扩展,是基于CORBA标准协议,允许进程间相互通信,实现CORBA集成RMI-IIOPJava Naming and Directory Interface:Java命名和目录接口,是透明查找分布对象和服务的机制,用来定位组件和资源在网络中的位置JNDIJava Service:Java感知对象,可以通过HTTP的请求/响应与Web客户的交互,通常用来实现表示逻辑Servlet6/18/202429信息系统集成3.6 J2EE应用架构J2EE技术规范规范简称Java M3.6 J2EE应用架构lJ2EE技术规范(续表)规范简称Java Server Page:Java服务页面,主要用于动态页面生成,实际上也是Servlet,由HTML或XML和部分Java代码交织编写,也可实现对业务层的直接访问JSPJava API for XML Parsing:解析XML的Java APIJAXPEnterprise Java Beans:企业级Java Bean,用于封装业务逻辑的软件组件,通过EJB容器来管理EJB的生命周期、安全和事务EJBJava Database Connectivity Extension:Java数据库连接扩展,是Java访问关系数据库的标准连接桥。JDBC6/18/202430信息系统集成3.6 J2EE应用架构J2EE技术规范(续表)规范简称Ja3.6 J2EE应用架构lJ2EE多层架构lJ2EE采用多层应用架构,整个系统分为客户层、J2EE应用服务器和企业信息系统层。大部分J2EE应用都划分成三层或四层,复杂的系统可能会有更多的层次。l这样每个层次都有明确的职责,系统结构十分清晰。应用客户/浏览器客户层JSP/ServletWeb层EJB业务层数据库EIS层J2EE服务器6/18/202431信息系统集成3.6 J2EE应用架构J2EE多层架构应用客户/客户层JS3.6 J2EE应用架构lJ2EE多层架构lJ2EE的多层次分布式应用模型是根据功能把应用逻辑分成多个层次,每个层次支持相应的服务器和组件,组件在分布式服务器的组建容器中运行。l在企业开发逻辑上将系统划分为五层:客户层、Web层(表示层)、业务层、集成层和资源层。6/18/202432信息系统集成3.6 J2EE应用架构J2EE多层架构7/28/202333.6 J2EE应用架构lJ2EE多层应用体系结构浏览器特制客户端容器容器容器ServletJSP会话Bean实体Bean消息驱动BeanJDBC公用适配器专用适配器数据库其他应用系统6/18/202433信息系统集成3.6 J2EE应用架构J2EE多层应用体系结构浏特容器容器3.6 J2EE应用架构lJ2EE客户层系统的客户端,在J2EE体系中的客户端可以是浏览器,也可以是具有特殊要求的定制客户端。采用一般浏览器的是B/S结构中所提倡的瘦客户端;采用Java Applet一般属于胖客户端,客户端程序具有部分业务逻辑描述,并提供具有Java风格的特制用户交互界面。客户端与表示层之间通过HTTP/HTTPS即可交互,承载的语言一般是HTML或XML。对使用胖客户端的情况,采用的交互手段可以多种多样。6/18/202434信息系统集成3.6 J2EE应用架构J2EE客户层7/28/2023343.6 J2EE应用架构l表示层:提供交互界面,接受用户的输入,将用户的操作请求传递给应用层,等待应用层处理结果处理结果,并将结果返回给用户。在用户和应用逻辑之间起到中介作用。表示层可以承担几乎全部逻辑,但是基于对系统的可扩展性、可维护性和负载均衡等问题的考虑,在构造大型应用中,Web服务器(表示层)尽量少一些业务逻辑的处理,而将业务逻辑交给应用层。表示层与应用层之间的通信主要借助JMS和RMI进行。6/18/202435信息系统集成3.6 J2EE应用架构表示层:7/28/202335信息系3.6 J2EE应用架构l业务层业务层主要完成业务逻辑的执行,与数据库及后台系统资源进行交互的应用系统部分,在J2EE中,提供应用层业务逻辑支持和数据库操作支持的组件主要是EJB。EJB首先是一种技术规范,它本身并不提供分布式计算支持。EJB的组件特性、分布式计算特征均是由EJB容器提供的。程序员将从繁重复杂的分布式对象和组件构造中解脱出来,而把精力全部投入到业务逻辑本身。6/18/202436信息系统集成3.6 J2EE应用架构业务层7/28/202336信息系统3.6 J2EE应用架构l集成层集成层主要完成应用层的业务逻辑与各类数据库资源、不同应用系统之间的集成。实现数据的共享和应用功能的共享。数据库连接主要由EJB和JDBC实现,应用程序之间功能操作一般采用适配器来实现。l资源层资源层主要是指信息资源,包括各类数据库、文档以及其他的应用系统等。可能是系统建设中新建的资源,也可能是企业信息化过程中遗留下来的系统资源。6/18/202437信息系统集成3.6 J2EE应用架构集成层7/28/202337信息系统3.7.NET应用架构l.NET概述l微软的.NET是一组开放的互联网协议,推出的一系列产品、技术和服务。.NET开发框架在通用语言运行环境基础上,给开发人员提供了完善的基础库类、数据库访问技术及网络开发技术,开发者可以使用多种语言快速构建网络应用。l包括企业内部、企业之间各类应用的集成统一,也包括个性化集成服务。内容覆盖了不同的设备接入、Web服务应用的开发、部署、发布、服务等。6/18/202438信息系统集成3.7.NET应用架构.NET概述7/28/202338信3.7.NET应用架构l.NET框架概述l.NET框架旨在实现下列目标:提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储执行,还是在本地执行但在Internet上分布,或者远程执行。提供一个将软件部署和版本控制冲突最小化的代码执行环境,以消除“DLL HELL”问题。提供一个保证代码安全执行的代码执行环境。提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。按照工业标准生成所有通信,以确保基于.NET框架的代码可与任何其他代码集成。l.NET框架体系结构由以下部分组成:通用语言运行时、框架类库、ASP.NET以及ADO.NET、企业服务、Web服务、Windows窗体、远程处理等。Visual.Studio.NET是全面支持.NET的开发工具。6/18/202439信息系统集成3.7.NET应用架构.NET框架概述7/28/202333.7.NET应用架构l.NET开发框架VBC+C#JScript通用语言规范通用语言规范ADO.NETASP.NETWindows应用应用通用语言运行环境通用语言运行环境(common language runtime)框架类库框架类库(framework class library)Visual Studio.NET6/18/202440信息系统集成3.7.NET应用架构.NET开发框架VBC+C#JSc3.7.NET应用架构l通用语言运行环境(CLR)CLR处于.NET框架的最底层,它是将底层平台差异进行抽象的运行期基础设施。CLR支持所有能用公共中间语言CIL表示的编程语言。从而为多种语言提供了一种统一的运行环境,使得组件和XML Web服务的综合使用不再受编程语言的限制。提供了更多的功能和特性,从而大大简化了应用程序的发布和升级;多种语言之间的交互;自动的内存和资源管理等。.NET中的几个重要的概念是程序集、应用程序域、元数据和IL中间语言。6/18/202441信息系统集成3.7.NET应用架构通用语言运行环境(CLR)7/28/3.7.NET应用架构l几个重要概念l程序集程序集是.NET平台用于部署和配置的单元。它是自我描述的安装单元,由一个或多个文件组成,一个程序集可以是一个包括元数据的DLL或EXE,也可以由多个文件组成,如资源文件、元数据、DLL和EXE。6/18/202442信息系统集成3.7.NET应用架构几个重要概念7/28/202342信3.7.NET应用架构l应用程序域提供安全而通用的处理单元,处理CLR可使用它来提供应用程序之间的隔离。可以在具有同等隔离级别的单个程序中运行几个应用程序域,而不会造成进程间调用或进程间切换等方面的额外开销,在一个进程内运行多个应用程序的能力显著增强了服务器的可伸缩性。应用程序域所提供的隔离优点在于:在一个应用程序中出现的错误不会影响其他应用程序。能够在不停止整个进程的情况下停止单个应用程序。使用应用程序域可以卸载在党应用程序中运行的代码。6/18/202443信息系统集成3.7.NET应用架构应用程序域7/28/202343信息3.7.NET应用架构l元数据在CLR中运行的可执行文件与Windows可执行文件不同,因为它们不仅有代码和数据,而且还有元数据(meta data)。在.NET中,元数据包括类型定义、版本信息、外部程序集引用和其他标准化信息。.NET使用元数据描述特定.NET程序集中使用和暴露的所有类型。元数据比类型库丰富得多,包括程序集、模块、类、接口、方法、属性、字段、事件以及全局方法等的描述。可以利用.NET提供的反射API对程序集的元数据进行访问。6/18/202444信息系统集成3.7.NET应用架构元数据7/28/202344信息系统3.7.NET应用架构lIL中间语言Microsoft将它的语言抽象层成为公用中间语言(common intermediate language,CLR),IL类似于Java编译器声称的字节码,支持所有面向对象特性,包括数据抽象、继承、多态以及异常的事件等概念。任何.NET语言都可以转化为IL,因此.NET支持多种语言,而且将来可能支持多种平台,只要目标平台有IL。公用类型系统CTS和公用语言规范CLS可确保多种语言的兼容性、互操作性和可集成性。6/18/202445信息系统集成3.7.NET应用架构IL中间语言7/28/202345信3.7.NET应用架构 CLR主要包括类装载器、JIT编译器和其他执行支持和管理组件。.NET PE(portable executable)文件位于CLR的顶层,在CLR的VEE中执行。类装载器负责将.NET类装载进内存并为它们的执行做准备。在成功完成之前,必须找到目标类。一旦目标类装载,类装载器就向该类的每个方法发出一个小的存根(stub)。在类装载器装载之后,而在IL代码执行之前,验证器处理必须验证的代码。验证器在运行时用来验证代码是否安全。最后,托管的本机代码将接受其他执行支持组建的处理,如代码管理、安全管理、无用资源回收、异常管理、调试管理、列集管理和线程管理等。.NET PE文件文件类装载器类装载器JIT编译器编译器验证器验证器JIT执行支持和管理执行支持和管理6/18/202446信息系统集成3.7.NET应用架构 CLR主要包括类装载器、JI3.7.NET应用架构lADO.NETlADO.NET是数据访问模型,用于访问关系型数据库系统。lADO.NET优点如下:互操作性 采用XML作为其有效的数据格式,解决了公用数据交换的限制,而且,由于XML只是结构化文本,将XML作为HTTP网络协议顶层的数据格式,可以将防火墙的相关问题减至最小。可伸缩性 采用非连接数据机,当客户请求数据时,数据集将被获得,并传送至客户,然后连接会尽可能的及时关闭。提高了可伸缩性和系统的性能。高效性 ADO.NET提供了丰富而可扩展的框架类,开发者可以在此基础上快速开发健壮的、高性能的XML Web服务和现在流行的N层应用程序。6/18/202447信息系统集成3.7.NET应用架构ADO.NET7/28/2023473.7.NET应用架构lADO.NET的对象模型包括两组不同的类:内容组件和托管供应器组件。内容组件包括DataSet类和其他支持类:DataTable,DataRow等托管供应器组件用于辅助数据获取和更新。SQL Server和其他和其他OLE DB数据存储数据存储CommandConnectionConnectionCommandDataReaderDataAdapter数据存储托管供应器组件与数据相关组件DataSet6/18/202448信息系统集成3.7.NET应用架构ADO.NET的对象模型包括两组不同3.7.NET应用架构lASP.NETlASP.NET是Microsoft.NET中的网络编程结构,使得建造、运行和发布网络应用非常方便和高效。lASP.NET网络表单 设计目的就是使得开发者能够非常容易的创建网络表单,将VB中的快速开发模型引入到网络开发中来。lASP.NET Web服务 在ASP.NET中,建造和使用网络服务都非常方便,在ASP.NET中建造网络服务就是编写一个扩展名为.asmx的文件,在这个文件中加入需要表现的方法既可,网络服务的建造者不需要了解SOAP和XML的细节。lASP.NET应用框架 ASP.NET应用不再是解释脚本,而是编译运行,再加上灵活的缓冲技术,从根本上提高了性能;发布一个网络应用,仅仅是一个复制文件的过程;开发者可以将应用的配置信息存放在XML格式的文件中;提供更多的认证和安全管理方式,提高应用程序的可靠性。6/18/202449信息系统集成3.7.NET应用架构ASP.NET7/28/2023493.7.NET应用架构lJ2EE与.NET比较特征J2EE.NET技术类型业界标准产品中间件厂商30多家微软解释器JRECLR动态Web页面支持JSPASP.NET中间层组件EJB.NET管理的组件数据库访问JDBC,SQL/JADO.NET是否支持Web服务是是是否具备中间件功能是是6/18/202450信息系统集成3.7.NET应用架构J2EE与.NET比较特征J2EE.3.8 基于组件的软件开发l问题的提出l计算机的不断发展为计算机及网络应用提供了大量技术先进、功能强大的应用软件系统,同时也给软件开发者和用户提出了问题:软件系统规模庞大,研制周期长,维护费用高。软件系统过于复杂,在一个系统中集成了各种功能,大多数功能不能灵活的装卸、单独升级或重复利用。应用软件不易集成,即使各应用程序是用相同的编程语言编写的,并且运行在相同的机器上,特定应用程序的数据和功能也不能提供给其他应用程序使用。l面向对象的程序设计思想得到很大的发展,结果却产生了大量的“对象孤岛”。l将面向对象思想和组件编程思想结合发展出急于对象的组建软件结构,为这一领域开辟了新的道路。6/18/202451信息系统集成3.8 基于组件的软件开发问题的提出7/28/202351信3.8 基于组件的软件开发l组件技术的发展简史和特点l软件系统规模庞大,研制周期长,维护费用高。l软件系统过于复杂,在一个系统中集成了各种功能,大多数功能不能灵活的装卸、单独升级或重复利用。l应用软件不易集成,即使各应用程序是用相同的编程语言来编写的,并且运行在相同的计算机上,特定应用程序的数据和功能也不能提供给其他应用程序使用。l为克服以上困难,实现行业范围软件的“即插即用”,关键是解决软件系统的可操作性、可扩展性、语言独立性和跨平台操作能力。6/18/202452信息系统集成3.8 基于组件的软件开发组件技术的发展简史和特点7/28/3.8 基于组件的软件开发l软件组件可看成一种软件集成电路元件:软件IC没有硬件IC的天然聚合性,构成粒度大小自由,便于扩展。通过规定一个统一的二进制标准,建立起机构之间的智能互操作机制和语言独立性。外界仅通过接口访问组件。多侧面性,即组件表达的语义层次高,可以从不同侧面进行连接,外部特性不惟一。支持封装、继承、多态性。6/18/202453信息系统集成3.8 基于组件的软件开发软件组件可看成一种软件集成电路元件3.8 基于组件的软件开发l开发EJB组件lEJB容器Enterprise Bean是在称作EJB容器的特殊环境中运行的软件组件。容器容纳和管理的方式与Java Web服务器容纳Servlet或HTML浏览器容纳Java Applet的方式相同。EJB容器在运行时管理Enterprise Bean的各个方面,包括远程访问Bean、安全性、持续、事务并行性和资源的访问与合用。容器不允许客户机应用程序直接访问Enterprise Bean。当客户机应用程序调用Enterprise Bean上的远程方法时,容器首先拦截调用,以保持持续、事务和安全性都正确应用于客户机对Bean执行的每一个操作。Bean开发人员可以将精力集中于封装商业规则,而容器处理其他的一切。6/18/202454信息系统集成3.8 基于组件的软件开发开发EJB组件7/28/202353.8 基于组件的软件开发lEJB组件的组成规范的EJB组件由Home接口、Remote接口、组件类和部署描述文件构成。EJB组件的Home接口用于定义创建、查找和删除组件对象实例的方法。以有状态会话类型EJB组件CalcBonusEJB为例,其Home接口定义如下面代码所示:6/18/202455信息系统集成3.8 基于组件的软件开发EJB组件的组成7/28/20233.8 基于组件的软件开发lEJB组件的组成 在上述定义中,EJB组件的Home接口继承EJBHome接口,在该接口中包括两个异构类型的创建组件对象实例的create方法,两个方法均返回该EJB组件的Remote接口对象。在Home接口中还定义了用于从EJB容器的组件实例池中删除组件对象实例的remove方法。该方法对应于EJB组件类中定义的ejbRemove方法。对于实体类型EJB组件,在组件的Home接口中还应定义查找组件对象实例的方法,用于客户端根据实体组件的主键值在EJB容器中查找指定的实体类型EJB组件。该方法的定义和实现过程将在第6讲中详细讲解。另外,Home接口中定义的create方法和remove方法能够抛出的Remote Exception和CreateException类型异常。两种类型的异常定义在java.rmi包中并且异常的参数和返回值类型均为合法的RMI-IIOP类型。由异常的返回值形式可以看出:EJB组件对象的Home接口是对Java RMI-IIOP协议有效的接口,客户端应用可以基于RMI-IIOP协议访问部署在EJB容器中的组件对象的Home接口。在Home接口中定义的方法除了能够抛出上述系统异常外,EJB组件的设计人员可以定义用户类型异常并Home接口中定义的方法抛出。6/18/202456信息系统集成3.8 基于组件的软件开发EJB组件的组成 在3.8 基于组件的软件开发EJB组件的Remote接口用于定义客户端应用程序能够调用的组件商务方法。与Java接口定义相似,在Remote接口中定义的商务方法只是一个框架而没有具体的实现代码。EJB组件设计人员根据Remote接口中定义的商务方法在组件类中为这些方法编写实现代码。有状态会话类型EJB组件CalcBonusEJB的Remote接口定义如下:6/18/202457信息系统集成3.8 基于组件的软件开发EJB组件的Remote接口用于定3.8 基于组件的软件开发 EJB组件的Remote接口继承定义在javax.ejb包中的EJBObject接口。在Remote接口中定义了两个名称分别为calculateBonus和calculateTax的方法。两个方法均抛出RemoteException类型异常。由Remote接口中定义的方法能够抛出的异常类型可以看出:Remote接口同样是对于Java RMI-IIOP协议有效的远程接口。EJB组件类用于定义两种类型方法的实现代码:一种是EJB组件的生命期方法,另外一种是EJB组件的Remote接口中定义的商务方法。6/18/202458信息系统集成3.8 基于组件的软件开发 EJB组件的Rem3.8 基于组件的软件开发会话类型EJB组件对象的组件类实现Session Bean接口、实体类型EJB组件实现EntityBean接口、消息驱动类型EJB组件实现MessageDriven Bean和MessageListener接口。下面代码为有状态会话类型EJB组件CalcBonusEJB的组件类定义代码:6/18/202459信息系统集成3.8 基于组件的软件开发会话类型EJB组件对象的组件类实现3.8 基于组件的软件开发上述会话类型EJB组件对象CalcBonusEJB的组件类定义实现了Session Bean接口对象。就有状态会话类型EJB组件而言,在组件类定义中除了实现组件的商务方法外,还需要实现SessionBean接口中定义的ejbCreate、ejbRemove、ejbAc tivate和ejbPassivate等组件生命期方法。会话类型EJB组件的生命期由EJB组件部署的EJB容器控制,因此在定义的方法中没有任何代码。如果定义一个组件管理持久性(BMP)实体类型的EJB组件,则需要为所有的组件生命期方法编写生命期控制代码。另外还需要明确的是:客户端应用程序调用部署在EJB服务器中EJB组件的方法,其实质上不是直接调用组件类中定义的方法,而是通过EJB组件的Home接口和Remote接口在EJB容器中的映射由EJB容器采用代理方式调用EJB组件类中的商务方法或者生命期方法。6/18/202460信息系统集成3.8 基于组件的软件开发上述会话类型EJB组件对象Calc3.8 基于组件的软件开发l部署描述文件是EJB组件的组装者和部署者应用的XML类型文档,其主要作用是声明EJB组件的构成、部署过程中需要EJB容器提供的服务以及对于系统资源的需求等信息。在EJB组件的组装和部署过程中,部署描述文件和EJB组件的Home接口、Remote接口以及组件类定义文件打包成为JAR压缩文档。下面的代码为CalcBonusEJB组件对象部署描述文件的部分代码:6/18/202461信息系统集成3.8 基于组件的软件开发部署描述文件是EJB组件的组装者和
展开阅读全文