
软件工程5-5.ppt
79页《现代软件工程》,第五部分软件体系结构与系统概要设计,体系结构的基本问题-1 面向对象的设计模式-2 软件系统的框架与体系结构-3 MVC结构与用户界面设计-4 基于构件的软件体系结构-5 从需求分析到系统设计过程-6 软件系统设计规范管理-7,,第五部分 软件体系结构与系统概要设计,第五部分 软件体系结构与系统概要设计,第五章 基于构件的软件体系结构构件对象模型COM/DCOM-5.1 三种构件模型COM+/CORBA/EJB-5.2 基于构件的框架与体系结构-5.3,5.1 构件对象模型COM/DCOM,COM/DCOM的由来 庞大和复杂的、集中式的系统分解为独立、相互协作的多个模块的组合 模块具有独立结构和功能,可通过接口相互协作 模块可单独设计、开发、编译、测试和维护 当硬件/软件环境、用户需求变化时,可只对个别模块进行修改,重新组装后就得到新系统 提高软件复用度,加快软件开发的效率和质量 提高部件的互操作性,既使部件的组装更简单,使已有部件的复用度提高 Internet的发展,为分布式计算,提供了更大的可能 以上三个主要原因,导致COM组件技术的发展,概念:组件,COM(Component Object Model)组件对象模型 DCOM(Disstributed COM)分布式组件对象模型 定义:基于面向对象概念的部件操作互连和通信的、可独立发布的二进制模型 组件不是一种设计方法,而是一种支持可组装的、可执行代码的结构标准 COM三个主要组成部分: COM组件:可独立发布的二进制组件,在Windows平台上为DLL或者EXE COM对象:通过COM接口提供服务 COM接口:客户与对象之间的协议,对象实现COM接口,客户使用COM接口,COM/DCOM组件技术更适合于现代的软件环境 软件更新快、规模大、强调协作等 组件的概念:发展一种软件IC 组件的核心,是基于本地过程调用LPC、远程过程调用RPC和标准操作接口的系统互连的工业标准 COM/DCOM的独立发布性实现了“接口与实现分离”,成为在Internet上实现多层体系结构的支持技术 组件体系 COM/DCOM/COM+、CORBA、EJB/J2EE 向中间件(middleware)发展,概念:组件,组件软件,部分升级:补丁——缩短软件的更新周期 增加异构的可能:标准接口、标准规范、标准协议 动态组合,提高软件生产力,符合现代软件发展要求 关键:接口设计 接口不变性 接口可扩展性 内部独立设计、独立开发 独立发布、独立测试,基础设施:组件体系,COM(Component Object Model) 93年发布,脱胎于MS的OLE 规范+实现 CORBA(Common Object Request Broker Architecture) 91年第1版,OMG(Object Management Group) 规范+实现 EJB(Enterprise javaBeans) J2EE中有关构件的规约,COM:组件对象模型,建立在二进制层次上的标准 许多概念与C++的特征相似,如vtable 程序与程序之间的通信建立在此基础上 COM规范 平台无关 定义了大量的标准接口用于各种用途 COM实现 平台相关 Windows实现了规范要求以及许多辅助功能,COM:特性,语言无关 规范和实现都是语言无关的 进程透明 ——〉位置透明 inproc server、out-of-proc server 可重用性 多线程特性 可扩展性,COM:结构,组件的对象特征:组件是对象,是类的实例 组件是一种对象: 组件由内部数据成员和操作方法组成 数据成员维持了组件的运行状态,反映了组件的生存周期 操作方法是组件提供给外部的操作函数的集合 组件是类的实例: 组件只能通过其类的实例化后,才能运行 在请求组件服务前,必须首先对组件实例化 根据设计的不同,分为组件实例和实例代理。
组件实例对应动态链接库DLL,实例代理对应执行程序EXECOM:用户特性,COM的用户特性 组件可以有多个接口,只能用户通过接口访问组件 对组件的用户而言,组件的运行是一个客户/服务器结构,,从用户看,组件是可能不知道在网络什么地方的一个可提供应用逻辑操作的服务器,可多用户访问 组件作为应用服务器,应支持多线程、同/异步调用等复杂控制,COM:接口,接口定义 COM组件规范采用OSF(Open Software Foundation,开放软件基金) 的DCE规范,描述远程过程调用的接口描述语言IDL(Interface Description Language)的技术上,进行扩充形成的IDL是一种不依赖任何程序语言的接口描述方法 全局唯一标识符GUID(Globally Unique IDentifier)GUID是一个128位的整数,唯一地标识COM对象或接口IID(Interface Identifier) 每一个接口,都有IID COM接口具有不变性、只允许单继承 COM对象可实现多个COM接口,这体现了COM的多态性,这些接口都由基接口IUnknown管理 基接口IUnknown是所有COM对象都必须实现的接口,其他接口继承此基接口,,COM:进程类型,COM对象的载体 组件的主体服务代码和使用组件的代码可以在同一个进程中,也可以不在 为此,组件实现有二种进程模型 进程内组件 DLL:在加载运行时,被自动安装在启动和应用它的进程中,在同一个进程空间中运行 进程外组件 组件是执行程序EXE 组件是DLL,但在远程,通过RPC实现,COM:进程内与进程外组件,进程内,进程外,但同一节点,COM:远程组件,进程外不同节点的外部组件,COM:COM构件与客户机的通信机制,,客户进程,,LPC/RPC,,,,组件程序,本地/远程服务器进程,,,,,(1)按IDL格式定义接口,并经编译后产生二个DLL,在用户本地的叫代理(Proxy),在服务器端(本地/异地)的叫桩(Stub) (2)客户程序与代理为同一进程,桩与COM在服务器进程 (3)LPC/RPC只在代理和桩之间进行通信 (4)代理和桩负责在用户进程与COM间进行参数和结果的翻译、传递和返回,COM实现:COM库,COM库是COM标准的系统级实现,为COM对象的标识和创建、内存管理、构件程序的卸载等,提供了一组标准的接口和辅助函数 在WINDOWS系统中,COM库主要包括OLE32.DLL和RPCSS.EXE文件。
他们的产生过程如下:,COM实现:注册表,系统注册表 全操作系统范围发布组件信息、对象信息、接口信息的仓库 是用户程序、构件程序、COM库交互上述信息的场所 注册工具和配置工具 Regsvr32.exe .reg 自注册 -RegServer DCOMCNFG.EXE MTS Explorer、活动目录,COM:远程COM对象激活过程,COM+ 在COM的基础上,随着Windows NT4.0的发布,COM发展到网络分布环境,产生了DCOM DCOM增加了位置透明、网络安全、跨平台调用等由于对用户透明,因此,可以看成是COM在网络上的自然延伸 为支持COM/DCOM的企业应用,MS在NT4.0SP4以后,推出了MTS(Microsoft Transaction Server,微软事务服务器),把应用系统的客户程序、应用构件和资源,有机的结合起来,弥补了COM/DCOM的不足 以后,MS又推出了DNA(Distributed interNet Application Architecture,分布式网络应用体系结构),包含工具、数据库、操作系统、编程模型和应用服务等,5.2 三种主要的组件模型1:COM系列,COM+ 在新的企业应用体系结构下,MS进一步把COM/DCOM、MTS统一起来,这就是COM+ COM+可以看成是基于操作系统和分布式企业应用之间的“中间件” COM+基本结构,5.2 三种主要的组件模型,,COM+,,COM+目录 负载平衡 驻留内存数据库 对象池 新的事件模型 构件管理和部署 JIT激活,,,MTS 事务支持 资源分发管理 安全模型 易于开发和管理,,远程支持 DCOM分布式构件服务,,COM 基于接口的变成模型基本的构件服务,5.2 三种主要的组件模型2:CORBA,CORBA(Common Object Request Broker Architecture)公共对象请求代理体系结构 OMG,800多家厂商联合制定的标准 91年 1.0,主要是C语言映射 95年 2.0,加入IIOP,目前最新版本3.0 体系结构最完整、最清晰、跨平台最多 CORBA规范 通过接口定义语言IDL定义接口 使用不同编译语言和编译器实现构件 通过对象请求代理ORB,连接,形成跨平台应用 CORBA实现:ORB(Object Request Broker),CORBA体系结构,,客户机,,对象实现,,,,,,,,,,输入参数,输出参数+回送值,CORBA:跨平台、跨语言,典型的语言:C++语言、Java语言、Smalltalk多种平台 关键:IOR(Interoperable Object reference)ORB实现,部分ORB实现,商业ORB Orbix,IONA公司 Visibroker,Inprise公司,4.0版完全支持2.3规范 Netscape communicator浏览器嵌入Visibroker 自由ORB ORBit,遵循CORBA 2.2规范,支持C语言,性能较高 mico,GNU,OpenSource TAO,美国华盛顿大学分布式对象计算研究小组 omniORB,AT&T剑桥实验室 国产ORB 国防科大的嵌入式CORBA(eBus) 东南大学的ORBUS,CORBA:客户,客户通过stub或者CORBA库与对象或者ORB进行通信,CORBA:对象,对象与OA进行通信,CORBA:C++映射开发过程,编写IDLIDL-〉C++利用生成的stub类编写客户利用生成的impl类编写服务器对象{以字符串形式传递OR},CORBA:核心,CORBA IDL 支持多继承 支持结构化数据类型字符串形式的ORPOA CORBA对象的环境context 策略设置,CORBA:核心,GIOP(General Inter-ORB Protocol) 互操作协议框架 IIOP(Internet Inter-ORB Protocol)IOR CORBA对象的标识实现仓库、接口仓库 未标准化,CORBA:服务,命名服务 层次命名 绑定Trading Service 功能更强、使用更灵活的对象查询服务事件服务 事件发送方和接受方之间的decouple,CORBA Overview,ORB(Object Request Broker ) Interface Definition Language (IDL) CORBA Communications Model: IIOP CORBA Object Model: IOR CORBA Clients and Servers client stubs and server skeletons CORBAservices and CORBAfacilities,CORBA结构,CORBA Specification overview,OMG IDL Interface: ORB Interface、DII/DSI、Interface Repository POA Interoperability GIOP、IIOP、IOR Mapping COM、Automation C mapping、C++ mapping、SmallTalk Service Specification(单独的文档) naming service、event service、transaction service、security service、trade service、……,。












