《COM/DCOM 编程指南》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:(美)(科里)Corry等著;刘云,孔雷译
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2000
  • ISBN:7900622624
  • 页数:416 页
图书介绍:COM/DCOM是计算机编程界最热门、很实用的新技术。本书以实例进行教学、循序渐进的讲述了COM/DCOM的概念与编程技巧。全书共分13章,内容包括:Microsoft 对象技术概述、对象的演变、创建COM对象和接口、实现COM客户和服务器、使用MFC进行以COM编程、使用聚合模拟继承、使用本地服务器打破过程边界、使用ActiveX模板库创建COM对象、分布式对象概述、安全性、使用不同的COM线程模型,揭开自动化的面纱和使用分布式对象等。本书实例丰富,讲述清晰,图文并茂。如果你想成为一个高级程序员,并正在寻求对COM/DCOM知识的快速入门,那么本书将非常适合你。

前言页 1

第1章 Microsoft对象技术概述 1

1.1 COM,DCOM,OLE和ActiveX 1

1.2 组件技术的演变 2

1.2.1 定制控制 2

1.2.2 Visual Basic扩展 2

1.2.3 OLE 1.0 3

1.2.4 OLE 2.0 3

1.3 理解OLE 4

1.3.1 从最终用户的角度观察OLE 4

1.3.2 从程序员的角度观察OLE 8

1.4 ActiveX概述 20

1.4.1 通过ActiveX扩展OLE技术 21

1.4.2 新的ActiveX技术 22

1.5 分布式组件对象模型(DCOM) 23

1.6 小结 24

第2章 对象的演变 25

2.1 对象和类 25

2.2 什么是面向对象 26

2.2.1 封装 26

2.2.2 继承 29

2.2.3 多态性 32

2.3 抽象的基类 34

2.4 类对象 34

2.5 从C++的观点看对象 35

2.5.1 C++中的封装 36

2.5.2 C++中的继承 37

2.5.3 C++中的方法重载 38

2.5.4 C++中的多态性 39

2.5.5 C++中的抽象基类 41

2.5.6 C++中的类对象 42

2.6 从COM的观点看对象 45

2.6.1 COM中的封装 45

2.7 COM中的继承 47

2.7.1 COM中的方法重载 49

2.7.2 COM中的多态性 49

2.7.3 COM中的类对象 50

2.8 小结 51

第3章 创建COM对象和接口 52

3.1 了解低级COM 52

3.2 客户与服务器 53

3.2.1 进程内服务器 55

3.2.2 本地服务器 55

3.2.3 远程服务器 56

3.2.4 代理 56

3.2.5 服务器的工作实现 58

3.3 用GUID标识类 60

3.3.1 生成GUID 61

3.3.2 将GUID放入源码 63

3.4 HRESULT返回类型 65

3.5 接口的构造 67

3.6 探索IUnknown 70

3.6.1 利用QueryInterface()来获取不同的接口 71

3.6.2 引用计数:AddRef()和Release() 72

3.6.3 认识IUnknown 74

3.7 小结 76

第4章 实现COM客户和服务器 77

4.1 最简单的示例程序:Fortune1 77

4.2 Fortune2示例程序 79

4.3 创建IFortuneTeller接口 79

4.3.1 IFortuneTeller接口 80

4.3.4 STDMETHOD宏 81

4.3.3 interface关键字 81

4.3.2 DECLARE_INTERFACE宏 81

4.3.5 PURE宏 82

4.4 宽字节字符集和国际化的字符串 82

4.4.1 在宽字节字符集与ANSI之间转换字符串 83

4.4.2 BSTR,COM字符串类型 84

4.5 重新创建CFortuneTeller为ComFortuneTeller 85

4.5.1 ComFortuneTeller类 85

4.5.2 VerboseMsg()函数 88

4.5.3 IUnKnown接口的ComFortuneTeller实现 90

4.5.4 全局数据 91

4.5.5 IFortuneTeller接口的ComFortuneTeller类实现 93

4.6 ComFortuneTellerFactory类 93

4.6.1 IClassFactory接口 93

4.6.2 实现ComFortuneTellerFactory 95

4.7 完成进程内服务器 100

4.7.2 DllCanUnloadNow()函数 101

4.7.1 DllGetClassObject()函数 101

4.8 创建客户 102

4.8.1 初始化 104

4.8.2 取回一个指向FortuneTeller对象的接口指针 105

4.8.3 使用 108

4.8.4 终止 108

4.9 注册服务器 109

4.9.1 注册表基础知识 109

4.9.2 COM类和注册表 110

4.10 小结 111

第5章 使用MFC进行COM编程 112

5.1 MFC简介 112

5.2 MFC和OLE/ActiveX 113

5.3 ActiveX模板库 113

5.6 多重接口和多重继承 114

5.4 多重组件和它们的多重接口 114

5.5 多重接口支持不是聚合 114

5.6.1 符号冲突的问题 115

5.7 使用嵌套类输出多重接口 116

5.7.1 Fortune3示例程序 117

5.7.2 ComFortuneTeller的MFC版本 117

5.7.3 CCmdTarget类中的IUnknown实现 118

5.7.4 声明嵌套类 120

5.7.5 INTERFACE MAP,OLECREATE和DYNCREATE宏 121

5.7.6 实现MFC ComFortuneTeller类 122

5.7.7 使用IMPLEMENT_DYNCREATE和IMPLEMENT_OLECREATE实现MFC类工厂 126

5.7.8 声明和实现接口映射 127

5.7.9 在MFC服务器中对对象实例进行计数 128

5.7.10 为嵌套类实现IUnknown接口 129

5.7.12 实现IFortuneTeller和IQuotation接口 131

5.7.11 IMPLEMENT_NESTED_IUNKNOWN宏 131

5.7.13 完成基于MFC的Fortune3服务器 132

5.7.14 Fortune3客户程序 138

5.8 小结 141

第6章 使用聚合模拟继承 142

6.1 聚合的功能 142

6.1.1 聚合的机制 143

6.2 聚合和MFC风格 144

6.3 创建机器人组件 146

6.3.1 IRobot接口 146

6.3.2 ISimpleDrawable接口 146

6.3.3 ComRobot COM类 147

6.3.4 客户和服务器 153

6.3.5 客户程序主窗口 154

6.4 使用聚合的NoisyRobot组件 157

6.5 小结 166

7.1 为什么建立本地服务器 167

第7章 使用本地服务器打破进程边界 167

7.1.1 编排中间层 168

7.1.2 代理与占位模块 168

7.2 接口定义语言 170

7.3 编制定制组件的IDL文件 171

7.3.1 Import 174

7.3.2 Typedef 174

7.3.3 Interface 175

7.3.4 方法原型 176

7.3.5 Coclass 178

7.4 将MIDL集成到Developer Studio中 178

7.5 COM实例:比萨饼订购向导 179

7.5.1 ComPizzaOrderTaker类 180

7.5.2 PizzaOrderTaker本地服务器 190

7.5.3 代理/占位模块DLL 198

7.5.4 向导客户 203

7.6 小结 224

第8章 使用ActiveX模板库创建COM对象 225

8.1 ATL简介 225

8.1.1 ATL与C++模板 226

8.1.2 多重继承 226

8.1.3 自动化和双重接口 226

8.1.4 Tear-off接口 227

8.2 ATL的体系结构 227

8.2.1 CComModule 227

8.2.2 CComObjectRoot 228

8.2.3 CComObject 228

8.2.4 CComCoClass 229

8.2.5 在定制接口中混合 230

8.3 比萨饼订购实例的ATL版本 231

8.3.1 用ATL声明ComPizzaOrderTaker类 231

8.3.2 实现ATL ComPizzaOrderTaker类 235

8.3.3 建立本地服务器 240

8.3.4 建立进程内服务器 250

8.5 注册表脚本程序和注册表管理程序 252

8.5.1 测试注册表脚本程序 253

8.5.2 编写注册表脚本程序 253

8.5.3 调用注册表管理程序 257

8.5.4 宏替换 259

8.6 增加新的向导配置入口 260

8.7 小结 260

第9章 分布式对象概述 262

9.1 分布式系统的发展 262

9.1.1 传统系统 263

9.1.2 客户/服务器 263

9.2 分布式COM 267

9.2.1 对象RPCs 268

9.2.2 OXID 269

9.2.3 传递接口指针 270

9.2.4 优化DCOM 270

9.2.5 Pinging 271

9.3 小结 272

第10章 安全性 273

10.1 安全支持提供者接口 273

10.2 NT安全性概述 273

10.2.1 安全性描述符 273

10.2.2 安全ID 274

10.2.3 访问控制列表 277

10.2.4 用户配置文件 280

10.2.5 访问标记 280

10.3 COM安全性 281

10.3.1 认证安全性 281

10.3.2 模仿安全性 282

10.3.3 激活安全性 283

10.3.4 调用安全性 288

10.3.5 示例 289

10.3.6 示例1 295

10.3.7 示例2 296

10.4 COM对象身份鉴别 296

10.5 进程内安全性 298

10.6 安全性覆盖和模仿 298

10.6.1 IClientSecurity 298

10.6.2 IServerSecurity 299

10.7 DCOM与CAPI 300

10.8 小结 300

第11章 使用不同的COM线程模型 301

11.1 线程函数 303

11.1.1 CreateThread() 303

11.1.2 SuspendThread()和ResumeThread() 304

11.1.3 TerminateThread() 305

11.1.4 GetExitCodeThread() 306

11.1.5 ExitThread() 306

11.1.6 beginthreadex() 307

11.1.7 线程局部存储区 309

11.2 线程类型 311

11.2.1 工作线程 311

11.2.2 消息队列线程 313

11.2.3 线程池 317

11.2.4 窗口线程 319

11.2.5 单元线程 321

11.2.6 纤程 323

11.3 线程同步 323

11.3.1 事件 324

11.3.2 互斥变量 325

11.3.3 临界区 326

11.3.4 信号量 328

11.4 COM线程模型 330

11.4.1 单线程模型 330

11.4.2 单元线程模型 332

11.4.3 自由线程模型 336

11.5 小结 336

第12章 揭开自动化的面纱 337

12.1 自动化的特征 339

12.1.1 自动化数据类型 346

12.2 自动化和事件支持 352

12.3 在MFC中支持自动化 352

12.4 在ATL中支持自动化 354

12.4.1 客户(控制器) 354

12.4.2 CComDispatchDriver 354

12.4.3 服务器 354

12.6 小结 356

12.5 特殊意义的DispID 356

第13章 使用分布式对象 357

13.1 远程对象实例化 357

13.1.1 远程存在的COM组件 358

13.1.2 CoCreateInstanceEx 362

13.1.3 决定什么时候使用进程内服务器、本地服务器或远程服务器 365

13.2 设计分布式对象应用 366

13.2.1 可扩缩性 367

13.2.2 负载平衡 368

13.2.3 连接到服务对象 369

13.2.4 事件通知和可连接对象 371

13.3 分布式比萨饼订购系统 372

13.3.1 新的PizzaOrderTaker服务器 373

13.3.2 定位器类 384

13.3.3 PizzaMaker服务器 388

13.3.4 PizzaMaker服务器查看器 401

13.4 小结 416