组件技术 潘爱民 panaimin@icst.pku.edu.cn 内容 !关于本课程 !软件技术的发展 !当前软件状况 !COM和CORBA简介 !本课程的内容 !课程安排 关于本课程 !加强基础 !展示最新软件技术 !提高软件设计能力 软件领域的发展 !程序设计方法的发展 !软件需求的变化 !软件环境的变化 !软件开发模式的变化 程序设计方法的发展 !功能分解法 —— 计算任务 综 合 使 用 !结构化程序设计 —— 以数据为中心 !面向对象程序设计 —— 以对象为中心 !组件程序设计 —— 以组件为中心 软件需求的变化 !计算 !实用 !管理(MIS) !分布式系统 软件环境的变化 单任务 多任务 文字界面 图形界面 单线程 多线程 平台相关 跨平台 单机(本 ) (分布式) 单 多 软件开发模式 机 高 和 本 OS + Compiler + Editor OS + Compilers + IDEs + Libraries + Wizards + Components + other inforstructures + 发展变化的结 !软件 的形 ! 变 –计算机的基本 模式 软件 10多 的变化 !软件的 程 ->?¢->Link->£ ? 本 — ¥合 !软件的分发 程 文??§currency1'?“?安??fi?fl ?– !软件?程 需求-?分?-?设计-?code->test->使用 !对象技术和组件技术的 · ???? 环境发展相结合 对象技术 !用 新的”? …‰ ? – 10多 的发展 currency1`OO′合软件的?? –对象技术的发展需ˉ开发?fi和开发 的? ˙ !Object-Based !Object-Oriented !¨? ? ???? ???多?? 组件技术 !组件技术ˇ合于— 的软件环境 –软件 新 ??模??强 –组件的 ?软件IC !组件infrastructure?组件 系 !COM?CORBA 和Java !组件 发布ˉ求“ ?实—分 ” !中?件(middleware) a 内的状况 ! 对象技术和组件技术方面? 内 ! ? –?的技术?能??o – ?的 ?技术? ?技术' – ?的 ?环境和? 环境 基础 !?¢ 程?程序 的 程 !C++ ?ˉ? –最能??对象技术?组件技术的?心 – 的 ? ! ?的' ! 内的 用领域 泛 类?对象 !类是定义?它??`状?和操 !对象是实例?它??`fi 的事物 !对象由类 定义 ! 个对象 以?多个fi有 ?关系的类相 联系 组件 !定义 发布的二 制单元 !有的 方称 “package” !容易¥淆 –服务 (server)?对象 !例如 – COM组件?Java Applet reuse 重用?复用 !软件设计的目标 ! 同形式的reuse ! 同层次的reuse !例子 –类库?中?件 ?实—分 !Interface and implementation !对象技术和组件技术都强 ! 是对象或者组件的通信 议 !实—是对象或者组件的内部细节 ! 的发布 !客户只关心 decouple !去耦 !尽 能 消除软件 ?或者软件的 同部 分 ?的联系 !是软件设计的重ˉ手段?也是目标 ! 同层次上的decouple 多??(polymorphism) !对象技术中的重ˉ !以 致的方式 …‰ 同的事物 ! C++中?通 ?和虚 员函数 实— ! 行?刻绑定 runtime binding ! 组件技术中?通 — module !模块 ! 同层次上有 同的定义 ! Windows和Linux中?指 ?载的二 制 单元 !有些操 ?模块相关 模板(template) !函数模板和类模板 !抽象层次 高 !泛型技术(generic programming) !已纳入C++标准 中 !例子 – STL?ATL C/S和多层结构 !这是指软件的结构 !C/S是基础 !多层结构fi有较?的灵活?和 扩展? !多层结构?基于组件的系统相结合 !变 – B/S 其他 !— 软件的发展形 `很多重ˉ的 !掌握这些 对于提高“己的软件理解水平 非常重ˉ !防止¥淆和滥用 软件形式 !单机软件 –整 发布 !Client/Server软件 –简单的 用 !分布式软件 软件发展面临的 ? !软件的复?度增加 – 开发管理 !软件– 和 新 –牵 而发?全身 !分布式软件的发布和 –用户需ˉfl ?程序员和设计 员 需ˉ 软件发展面临的 ?( ) !Custom-made versus standard software –如 平 ! 于全 开发 员 –软件层次 分 !?标准 –如Web ——?B/S !软件的 扩展? –用户 定制? 本?˙ 软件发展 !组件软件?软件组件 –中?件 a已 形 !软件基础设 的重ˉ? – 的重用 !API的多 化 !软件的 重用?ˉ求 –重用 度 同 !软件方 (solution)?consulting a 组件软件 !部分– – – 软件的 新 !增加` 构软件的 能 –标准 ?标准? ?标准 议 !??组合?提高软件 力 !′合— 软件的发展ˉ求 软件组件 !关 设计 – 变? – 扩展? !对基础设 的 – COM?CORBA?... !内部 设计? 开发 ! 发布? 基础设 组件 系 !COM(Component Object Model) – 93 发布? 于MS的OLE –? +实— !CORBA(Common Object Request Broker Architecture) – 91 1 ?OMG(Object Management Group) –? +实— COM 组件对象模型 !? 二 制层次上的标准 –¢多 ?C++的 £相??如vtable –程序?程序 ?的通信? ¥基础上 !COM? –平台?关 –定义`?§的标准 用于currency1 用' currency1 !COM实— –平台相关 – Windows实—`? ˉ求以?¢多“?功能 COM ? ! ?关 –? 和实—都是 ?关的 ! 程?currency1 currency1 ——?? ?currency1 currency1 – inproc server?out-of-proc server ! 重用? ! 扩展? !多线程 ? COM !COM – IID 128?整数 – 定义 COM IDL –对 于C++中由fi虚函数组 的类 –单 ??基 IUnknown !COM ? – 变? – ?? –多??—— 行?刻的多?? COM 对象 !COM对象 – CLSID –实—多个 !COM对象 ? –身fl 定 –?? – 重用 Object IUnknown Interface1 Interface2 COM 组件 ! 程内组件 – DLL – Export Entrys ! 程–组件 – IPC RPC/LPC !COM对象的载 –??多个COM对象 COM 程内组件 !Inproc server – Export Entrys 客户 组件 COM 程–组件 !Out-of-proc server 客户 COM 行库 安全 提· LPC DCE RPC COM 行库 安全 提· LPC DCE RPC 组件 客户程序 客户 程 理对象 组件程序 组件 程 LPC/RPC 组件对象 COM ?程组件 !remote server 客户 COM 行库 安全 提· 议? DCE RPC COM 行库 安全 提· 议? DCE RPC 组件 DCOM 议 COM 组件信?发布 !?”? –发布组件的信??对象的信?? 的信? !?”?fi和 ?fi – Regsvr32.exe – .reg –“?” -RegServer – DCOMCNFG.EXE – MTS Explorer?活?目… COM ‰?COM对象 !对象的‰? 程 客户 组件 COM库 (OLE32.DLL) SCM (RPCSS.EXE) SCM (RPCSS.EXE) RPC 用‰?函数 ?程‰? ‰? 程和对象 COM COM对象管理 !客户使用? ??制对象 !COM实—`化 –currency1 “?手段 currency1 !组件类′ component category !MTS和COM+ COM COM 系 !基本的功能 !扩展功能 –? ? –结构化 ˉ –?字服务 –“?化 –其他 !COM+ COM COM+ !? COM的基础上?COM的“˙ ¨ !Services –事件服务 –??服务 –事务服务 – 载平 –其他 COM 用 !OLE ! 本功能扩展 !OLE DB !ADSI !ASP !其他 !ActiveX control COM 分布式 用 !COM/COM+为基于Windows的分布 式 用提·`基础设 – Transaction – Security – OLE DB – Web –? Active Directory –管理功能 CORBA !OMG?800多?ˇ—联合制定的标准 – 91 1.0? ˉ是C ? – 95 2.0?加入IIOP –目前最新 本2.3 !CORBA? –制 ` 操 ? ?上层标准 议 –? 多 的? !CORBA实— ORB CORBA 系结构 CORBA 跨平台?跨 ! 型的 C++ ?Java ? Smalltalk !多 平台 –关 IOR(Interoperable Object reference) !ORB – IONA的Orbix – Visigenic Software的Visibroker – ? 的ORBUS CORBA 客户 !客户通 stub或者CORBA库?对象或者 ORB 行通信 CORBA 对象 !对象?OA 行通信 CORBA C++? 开发 程 !? IDL !IDL-?C++ ! 用 的stub类? 客户 ! 用 的impl类? 服务 对象 !{以字′ 形式 OR} CORBA ?心 !CORBA IDL –?˙多 ? –?˙结构化数据类型 !POA – CORBA对象的环境context – 设 !字′ 形式的OR CORBA ?心 !GIOP(General Inter-ORB Protocol) – 操 议 ? – IIOP(Internet Inter-ORB Protocol) !实— 库? 库 –a标准化 !IOR – CORBA对象的环境context CORBA 服务 ! ?服务 –层次 ? –绑定 !事件服务 –事件发 方和 方 ?的decouple !Trading Service –功能 强?使用 灵活的对象 服务 课程内容( ) !准??? –组件技术介o – C++基础 课程内容(二) !COM/DCOM/COM+ – COM 和IDL – COM对象和COM实— – COM重用?和COM跨 程实— –“?化和 本技术 – COM开发?安排 – COM? ?? ?和绑定技术 –结构化 ˉ和统 数据 – DCOM和ActiveX?制 – COM+ 课程内容(¨) !设计模式 !CORBA介o !中? 1-2次新技术 ??法 ! – 1-2次 ! '目 ! COM本 ? ! COM 理? 用 ! COM技术内 ! Design Pattern 或者 设计模式 ! Advanced CORBA Programming with C++