《组件技术04578.ppt》由会员分享,可在线阅读,更多相关《组件技术04578.ppt(62页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、组件技术组件技术潘爱民北京大学计算机研究所2002-9-13http:/ 的比重,加强的比重,加强PatternsPatterns部分的比部分的比重重还有将来吗还有将来吗vv动机:加强基础加强基础展示最新软件技术展示最新软件技术提高软件设计能力提高软件设计能力vv课程的风格计算机科学的本质计算机科学的本质vv计算机的定义计算机的定义 冯冯-诺伊曼定义:诺伊曼定义:define a computer as a device define a computer as a device that accepts data,processes data,stores data,that accepts
2、 data,processes data,stores data,and produces output.and produces output.指令流处理方式指令流处理方式vv本质:本质:动态动态 计算计算 静态静态 存储存储软件领域的发展软件领域的发展vv程序设计方法的发展vv软件需求的变化vv软件环境的变化vv软件开发模式的变化程序设计方法的发展程序设计方法的发展vv功能分解法 计算任务vv结构化程序设计 以数据为中心vv面向对象程序设计 以对象为中心vv组件程序设计 以组件为中心综合使用软件需求的变化软件需求的变化vv计算vv实用vv管理(MIS)vv分布式系统软件环境的变化软件环境的
3、变化单任务多任务文字界面图形界面单线程多线程平台相关跨平台单机(本地)网络(分布式)单一语言多种语言软件开发模式软件开发模式机器码高级语言和脚本代码OS+Compiler+EditorOS+Compilers+IDEs+Libraries+Wizards+Components+other inforstructures+经验发展变化的结果发展变化的结果vv软件学科的形成软件学科的形成vv不变因素:不变因素:计算机的基本运作模式计算机的基本运作模式vv探求新的计算模型探求新的计算模型 量子计算量子计算 软件学科怎么办?软件学科怎么办?生物信息学生物信息学(?)(?)回顾软件学科回顾软件学科10多
4、年来的变化多年来的变化vv软件的产生过程:原始代码原始代码-编译编译-Link-Link-终代码、脚本终代码、脚本 混合混合vv软件的分发过程:文档、说明书、自动安装工具、培训、升级文档、说明书、自动安装工具、培训、升级vv软件工程:需求需求-分析分析-设计设计-code-test-code-test-使用使用vv对象技术和组件技术的不断普及,与大环境发展相结合对象技术对象技术vv用一种新的思路来看待问题1010多年的发展证明了多年的发展证明了OOOO符合软件的规律符合软件的规律对象技术的发展需要开发工具和开发语言的支持对象技术的发展需要开发工具和开发语言的支持vv三大特性:封装性、继承性、多
5、态性vv两种思想Object-BasedObject-BasedObject-OrientedObject-Oriented组件技术组件技术vv组件技术适合于现代的软件环境软件更新快、规模大、强调协作等软件更新快、规模大、强调协作等组件的概念、软件组件的概念、软件ICICvv组件的可独立发布性要求“接口与实现分离”vv组件infrastructure,组件体系COMCOM、CORBACORBA(和(和JavaJava)vv中间件(middleware)市场国内的状况国内的状况vv在对象技术和组件技术方面,国内落后vv问题:好的技术没能及时引进来好的技术没能及时引进来(怎么引进来怎么引进来?)?
6、)缺乏好的教材、技术杂志、技术书籍缺乏好的教材、技术杂志、技术书籍(?)(?)缺乏良好的教育环境和工业环境缺乏良好的教育环境和工业环境基础基础vv编译过程,程序产生的过程回归回归“冯冯-诺伊曼诺伊曼”模型模型vvC+之必要性:最能反映对象技术、组件技术的核心概念最能反映对象技术、组件技术的核心概念存在的问题:存在的问题:vv缺乏好的书籍缺乏好的书籍(?)(?)vv国内的应用领域不够广泛国内的应用领域不够广泛(?)(?)概念:类、对象概念:类、对象vv类是定义,它封装了状态和操作vv对象是实例,它反映了具体的事物vv对象由类来定义vv一个对象可以与多个具有继承关系的类相联系概念:组件概念:组件v
7、v定义:可独立发布的二进制单元vv有的地方称作“package”vv容易混淆:服务器服务器(server)server)、对象、对象vv例如:COMCOM组件、组件、Java AppletJava Applet概念:概念:reuse(重用、复用)(重用、复用)vv软件设计的目标vv不同形式的reusevv不同层次的reusevv例子:类库、中间件类库、中间件概念:接口与实现分离概念:接口与实现分离vvInterface and implementationvv对象技术和组件技术都强调vv接口是对象或者组件的通信协议vv实现是对象或者组件的内部细节vv接口的发布vv客户只关心接口概念:概念:de
8、couplevv去耦vv尽可能地消除软件之间或者软件的不同部分之间的联系vv是软件设计的重要手段,也是目标vv不同层次上的decouple概念:多态性概念:多态性(polymorphism)vv对象技术中的重要概念vv以一致的方式来看待不同的事物vv在C+中,通过继承和虚成员函数来实现vv运行时刻绑定:runtime binding区分两个词:区分两个词:overload vs.overrideoverload vs.overridevv在组件技术中,通过接口来体现概念:概念:modulevv模块vv不同层次上有不同的定义vv在Windows和Linux中,指可独立装载的二进制代码单元vv有些
9、操作与模块相关概念:模板概念:模板(template)vv函数模板和类模板vv抽象层次更高vv泛型技术(generic programming)vv已纳入C+标准之中vv例子:STLSTL、ATLATL概念:概念:C/S和多层结构和多层结构vv这是指软件的结构vvC/S是基础vv多层结构具有较好的灵活性和可扩展性vv多层结构与基于组件的系统相结合vv变种:B/SB/S概念:其他概念:其他vv现代软件的发展形成了很多重要的概念vv掌握这些概念对于提高自己的软件理解水平非常重要vv防止混淆和滥用概念软件形式软件形式vv单机软件整体发布整体发布vvClient/Server软件简单的网络应用简单的网
10、络应用vv分布式软件软件发展面临的问题软件发展面临的问题vv软件的复杂度增加代码开发管理代码开发管理vv软件升级和更新牵一而发动全身?牵一而发动全身?vv分布式软件的发布和配置用户需要培训,程序员和设计人员更需要用户需要培训,程序员和设计人员更需要软件发展面临的问题软件发展面临的问题(续续)vvCustom-made versus standard software如何平衡?如何平衡?vv依赖于全才开发人员软件层次划分软件层次划分vv软件的可扩展性用户可定制、脚本支持用户可定制、脚本支持vv与标准接轨如如Web Web B/SB/S软件发展趋势软件发展趋势vv组件软件、软件组件中间件市场已经形
11、成中间件市场已经形成vv软件基础设施的重要性经验和成果的重用经验和成果的重用vv软件的可重用性要求重用粒度不同重用粒度不同vvAPI的多样化vv软件方案(solution),consulting市场组件软件组件软件vv部分升级补丁补丁缩短软件的更新周期缩短软件的更新周期vv增加了异构软件的可能标准接口、标准规范、标准协议标准接口、标准规范、标准协议vv动态组合,提高软件生产力vv符合现代软件的发展要求软件组件软件组件vv关键:接口设计接口不变性接口不变性接口可扩展性接口可扩展性vv对基础设施的依赖COMCOM、CORBACORBA、.vv内部独立设计、独立开发vv独立发布、独立测试基础设施:组
12、件体系基础设施:组件体系vvCOM(Component Object Model)9393年发布,脱胎于年发布,脱胎于MSMS的的OLEOLE规范规范+实现实现vvCORBA(Common Object Request Broker Architecture)9191年第年第1 1版,版,OMG(Object Management Group)OMG(Object Management Group)规范规范+实现实现COM:组件对象模型组件对象模型vv建立在二进制层次上的标准许多概念与许多概念与C+C+的特征相似,如的特征相似,如vtablevtable程序与程序之间的通信建立在此基础上程序与
13、程序之间的通信建立在此基础上vvCOM规范平台无关平台无关定义了大量的标准接口用于各种用途定义了大量的标准接口用于各种用途vvCOM实现平台相关平台相关WindowsWindows实现了规范要求以及许多辅助功能实现了规范要求以及许多辅助功能COM特性特性vv语言无关规范和实现都是语言无关的规范和实现都是语言无关的vv进程透明 位置透明inproc serverinproc server、out-of-proc serverout-of-proc servervv可重用性vv多线程特性vv可扩展性COM:接口接口vvCOM接口IIDIID:128128位整数位整数接口定义语言接口定义语言COM
14、IDLCOM IDL对应于对应于C+C+中由纯虚函数组成的类中由纯虚函数组成的类单继承,基接口:单继承,基接口:IUnknownIUnknownvvCOM接口特性:接口不变性接口不变性继承性继承性多态性多态性运行时刻的多态性运行时刻的多态性COM:对象对象vvCOM对象CLSIDCLSID实现多个接口实现多个接口vvCOM对象特性:身份确定身份确定封装封装可重用可重用COM:组件组件vvCOM对象的载体包含多个包含多个COMCOM对象对象vv进程内组件DLLDLLExport EntrysExport Entrysvv进程外组件IPCIPC:RPC/LPCRPC/LPCCOM:进程内组件进程内
15、组件vvInproc serverExport EntrysExport EntrysCOM:进程外组件进程外组件vvOut-of-proc serverCOM:远程组件远程组件vvremote serverCOM:组件信息发布组件信息发布vv注册表发布组件的信息、对象的信息、接口发布组件的信息、对象的信息、接口的信息等的信息等vv注册工具和配置工具Regsvr32Regsvr32.exeexe.reg.reg自注册自注册-RegServerRegServerDCOMCNFGDCOMCNFG.EXEEXEMTS ExplorerMTS Explorer、活动目录活动目录COM:创建创建COM对
16、象对象vv对象的创建过程COM:COM对象管理对象管理vv客户使用规则,控制对象生命周期vvCOM实现优化各种辅助手段各种辅助手段vv组件类别 component categoryvvMTS和COM+COM:COM体系体系vv基本的功能vv扩展功能连接点连接点结构化存储结构化存储名字服务名字服务自动化自动化其他其他vvCOM+COM:COM+vv建立在COM的基础上,COM的自然延伸vvServices事件服务事件服务队列服务队列服务事务服务事务服务负载平衡负载平衡其他其他COM:应用应用vvOLEvvActiveX controlvv脚本功能扩展vvOLE DBvvADSIvvASPvv其他
17、COM:分布式应用分布式应用vvCOM/COM+为基于Windows的分布式应用提供了基础设施TransactionTransactionSecuritySecurityOLE DBOLE DBWebWeb集成集成Active DirectoryActive Directory管理功能管理功能CORBAvvOMG,800多家厂商联合制定的标准9191年年 1.0 1.0,主要是,主要是C C语言映射语言映射9595年年 2.0 2.0,加入,加入IIOPIIOP目前最新版本目前最新版本3.03.0vvCORBA规范制订了互操作规范,上层标准协议制订了互操作规范,上层标准协议一系列映射到多种语言
18、的规范一系列映射到多种语言的规范各种服务相关的规范各种服务相关的规范vvCORBA实现:ORBCORBA体系结构体系结构CORBA:跨平台、跨语言:跨平台、跨语言vv典型的语言:C+语言、Java语言、Smalltalkvv多种平台关键:关键:IOR(Interoperable Object reference)IOR(Interoperable Object reference)vvORB实现部分部分ORB实现实现vv商业商业ORBORB OrbixOrbix,IONAIONA公司公司 VisibrokerVisibroker,InpriseInprise公司,公司,4.04.0版完全支持版
19、完全支持2.32.3规范规范Netscape communicatorNetscape communicator浏览器嵌入浏览器嵌入VisibrokerVisibrokervv自由自由ORBORB ORBitORBit,遵循CORBA 2.2规范,支持C语言,性能较高 micomico,GNUGNU,OpenSourceOpenSource TAOTAO,美国华盛顿大学分布式对象计算研究小组 omniORBomniORB,AT&T剑桥实验室vv国产国产ORBORB 国防科大的嵌入式国防科大的嵌入式CORBA(eBus)CORBA(eBus)东南大学的东南大学的ORBUSORBUSCORBA:客
20、户:客户vv客户通过stub或者CORBA库与对象或者ORB进行通信CORBA:对象:对象vv对象与OA进行通信CORBA:C+映射开发过程映射开发过程vv编写IDLvvIDL-C+vv利用生成的stub类编写客户vv利用生成的impl类编写服务器对象vv以字符串形式传递ORCORBA:核心:核心vvCORBA IDL支持多继承支持多继承支持结构化数据类型支持结构化数据类型vv字符串形式的ORvvPOACORBACORBA对象的环境对象的环境contextcontext策略设置策略设置CORBA:核心:核心vvGIOP(General Inter-ORB Protocol)互操作协议框架互操作
21、协议框架IIOP(Internet Inter-ORB Protocol)IIOP(Internet Inter-ORB Protocol)vvIORCORBACORBA对象的标识对象的标识vv实现仓库、接口仓库未标准化未标准化CORBA:服务:服务vv命名服务层次命名层次命名绑定绑定vvTrading Service功能更强、使用更灵活的对象查询服务功能更强、使用更灵活的对象查询服务vv事件服务事件发送方和接受方之间的事件发送方和接受方之间的decoupledecouple课程内容课程内容(一一)vv准备知识组件技术介绍组件技术介绍C+C+基础基础(略略)课程内容课程内容(二二)vvCOM/
22、DCOM/COM+(缩减一部分)COMCOM接口和接口和IDLIDL COMCOM对象和对象和COMCOM实现实现 COMCOM重用性和重用性和COMCOM跨进程实现跨进程实现 自动化和脚本技术自动化和脚本技术COMCOM开发开发COMCOM连接点、命名和绑定技术连接点、命名和绑定技术 结构化存储和统一数据传输结构化存储和统一数据传输 DCOMDCOM和和ActiveXActiveX控制控制 COM+COM+课程内容课程内容(三三)vv设计模式参考参考“设计模式设计模式”一书一书增加一些其他与模式相关的内容增加一些其他与模式相关的内容vvCORBA介绍 vv中间插1-2次新技术报告考核办法考核办法vv作业(50%)2-32-3次次vv考试(50%)课程参考书目课程参考书目 vv COM原理与应用vvCOM本质论vv COM技术内幕vv Design Patterns 或者设计模式vv Advanced CORBA Programming with C+