北京大学:《组件技术》课程教学资源(讲义课件)第六讲 COM多线程模型、DCOM

COM多线程模型、DCOM 潘爱民 http://www.icst.pkuedu.cn/compcourse
COM多线程模型、DCOM 潘爱民 http://www.icst.pku.edu.cn/compcourse

内容 复习:COM聚合和COM跨进程模型 COM线程模型 分布式 COMDCOM) DCOM基本结构 对象激活 连接管理 并发管理 DCOM安全模型
内容 • 复习:COM聚合和COM跨进程模型 • COM线程模型 • 分布式COM(DCOM) – DCOM基本结构 – 对象激活 – 连接管理 – 并发管理 – DCOM安全模型

复习:COM包容模型 对象B IOtherInterfacel 客户程序 调用 ISomelnterfacel 调用 对象A ISomelnterface
复习:COM包容模型 对象 B ISomeInterface 对象 A ISomeInterface 客户程序 调用 调用 IOtherInterface

复习:聚合,支持聚合的对象 在非聚合方式下的接口示意图 对象A 委托 IUnknown 客户程序 QueryInterface ISomelnterfacel Add Ref Release Some Function 非委托 IUnknown
对象 A ISomeInterface 客户程序 QueryInterface AddRef Release SomeFunction 委托 IUnknown 非委托 IUnknown 复习:聚合,支持聚合的对象 在非聚合方式下的接口示意图

复习:聚合,支持聚合的对象 在聚合方式下的接口示意图 对象B QueryInterface 外部对象的 AddRef IUnknown IOtherlntelface Release Other Function 控制 客户程序 对象A 委托 Querylnterface UNKnown AddRef ISomeInterfacel 非委托 Somefunction IUnknown
复习:聚合,支持聚合的对象 在聚合方式下的接口示意图 对象 B IOtherInterface 对象 A ISomeInterface 客户程序 QueryInterface AddRef Release SomeFunction QueryInterface AddRef Release OtherFunction 外部对象的 IUnknown 委托 IUnknown 非委托 IUnknown 控制

聚合模型的要点 外部对象 创建内部对象的时候,外部对象必须把自己的 IUnknown接口指针传给内部对象 当外部对象接到对于聚合接口的请求时,它必须调用 非委托版本的 UNKnown的 QueryInterface函数,并把结 果返回给客户 内部对象 内部对象类厂的 Createlnstance必须检查 pUnkOuter参数 嵌套聚合:传递最外层的 pUnkOuter参数 除了非委托版本的 IUnknown之外,其他接口的 三个 Unknown调用必须全部委托给外部对象的 pUnkOuter
聚合模型的要点 • 外部对象 – 创建内部对象的时候,外部对象必须把自己的 IUnknown接口指针传给内部对象 – 当外部对象接到对于聚合接口的请求时,它必须调用 非委托版本的IUnknown 的QueryInterface函数,并把结 果返回给客户 • 内部对象 – 内部对象类厂的CreateInstance必须检查pUnkOuter 参数 – 嵌套聚合:传递最外层的pUnkOuter参数 – 除了非委托版本的IUnknown之外,其他接口的 三个IUnknown调用必须全部委托给外部对象的 pUnkOuter

通过类厂建立代理对象和组件对 象自定义列集过程 客户进程 组件进 客户 组件程序 ① Createlrhstance 类厂2LRCd类厂|类厂对象 更返 代理对象 存根代码 ⑥传输列集信息 ④创建 创建代 理对象 ⑤列集 件对 ⑩用 自定义代理 ⑧连接 组件对象 对象
通过类厂建立代理对象和组件对 象自定义列集过程 组件进程 组件程序 客户进程 类厂 代理对象 类厂 存根代码 类厂对象 自定义代理 组件对象 对象 客户 ④创建组 件对象 ① CreateInstance ②LPC/RPC ③调用 ⑤列集 ⑥传输列集信息 ⑦创建代 理对象 ⑨返回 ⑧连接 ⑩调用

自定义列集的要点 对象必须实现 Marshal接口 代理对象也必须实现 I Marshal接口,并且代 理对象与进程外对象之间协作 代理对象必须负责所有接口的跨进程操作 典型用途: 提高跨进程调用的效率,使用缓存状态等优化 技术 marshal-by-value
自定义列集的要点 • 对象必须实现IMarshal接口 • 代理对象也必须实现IMarshal接口,并且代 理对象与进程外对象之间协作 • 代理对象必须负责所有接口的跨进程操作 • 典型用途: – 提高跨进程调用的效率,使用缓存状态等优化 技术 – marshal-by-value

标准列集的 proxy和sb结构 客户进程 组件进程 客户程序 组件对象 代理对象 代理 存根代码 ITFI 存根 管理器 ITFI 管理器 中ITF2 O ITF2 中ITFn O ITIn IRpcProxy Buffer IRpcStub buffer RPC通道 RPC通道 IRpcChannelBufter 系统RPC 系统RC↓
标准列集的proxy和stub结构 客户进程 代理对象 组件进程 ITF1 客户程序 ITF2 ITFn 代理 管理器 IRpcChannelBuffer 系统 RPC 组件对象 存根代码 ITF1 ITF2 ITFn 存根 管理器 系统 RPC IRpcProxyBuffer IRpcStubBuffer RPC 通道 RPC 通道

进程外组件注意事项 自注册方式的变化 命令行参数/ ResErver和 UnregServer 注册类厂 何时被卸载 调用 Coinitialize和 CoUninitialize 实现自定义接口的代理/存根组件
进程外组件注意事项 • 自注册方式的变化 – 命令行参数/RegServer 和/UnregServer • 注册类厂 • 何时被卸载 • 调用CoInitialize 和CoUninitialize • 实现自定义接口的代理 /存根组件
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京大学:《组件技术》课程教学资源(讲义课件)第五讲 COM特性.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第四讲 COM实现.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第三讲 COM接口与对象.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第二讲 C++语言基础.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第一讲 软件领城的发展(潘爱民).pdf
- Linux爱好者入门教程.doc
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第12章 图形输出.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第10章 尺寸标注.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第1章 启动与退出.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第2章 绘图基础.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第5章 绘制图形.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第8章 图案填充.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第7章 图块及属性.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第11章 创建三维对象.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第9章 文字标注.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第4章 图层、线型、颜色.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第6章 图形编辑.ppt
- 景德镇高等专科学校:《AutoCAD 2002中文版》课程教学资源(PPT课件讲稿)第3章 绘图设置.ppt
- 华南热带农业大学:《计算机导论》第13章 信息安全.ppt
- 华南热带农业大学:《计算机导论》第12章 电子商务.ppt
- 北京大学:《组件技术》课程教学资源(讲义课件)第七讲 自动化 Automation.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第八讲 COM开发.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第九讲 COM:可连接对象&结构化存储.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十讲 COM:moniker、UT、control.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十一讲 COM+.pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十二讲 软件设计模式(一).pdf
- 北京大学:《组件技术》课程教学资源(讲义课件)第十三讲 软件设计模式(二).pdf
- 《数字平面艺术设计》课程教学资源(教材PPT课件,图片版)第2章 平面设计概述.ppt
- 《ASP程序设计》课程配套PPT教学课件(共十一章).ppt
- 湖北工业大学:《数据结构》第10章(10-1)查找的基本概念.ppt
- 湖北工业大学:《数据结构》第9章(9-2)哈希查找表.ppt
- 湖北工业大学:《数据结构》前言、第1章 绪论.ppt
- 湖北工业大学:《数据结构》第2章 线性表(1/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(2/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(3/4).ppt
- 湖北工业大学:《数据结构》第2章 线性表(4/4).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(1/3).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(2/3).ppt
- 湖北工业大学:《数据结构》第3章 堆栈和队列(3/3).ppt
- 湖北工业大学:《数据结构》第4章 串(String)(1/2).ppt