组件技术
潘爱民
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++