当前位置:首页 > 工业技术
COM+编程指南
COM+编程指南

COM+编程指南PDF电子书下载

工业技术

  • 电子书积分:14 积分如何计算积分?
  • 作 者:(美)Mark Michaelis著;宋丽红等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2002
  • ISBN:7111095367
  • 页数:449 页
图书介绍:本书是一本极具价值的学习COM+的编程参考书。它循序渐进地带领读者一步步深入到COM+的核心技术,以具体生动的实例把复杂的COM+结构展示在读者面前 。书中不仅注重COM基本知识的分析,而且向读者介绍了许多在COM+服务及客户程序编写过程中常用的编程技巧和经验。本书适合那些对COM及COM+有兴趣的初、中级读者阅读,也适合各大专院校的师生学习使用。相信无论是初学者,还是有一定编程经验的开发者都会从本书中受益。
《COM+编程指南》目录
标签:编程 指南

译者序 1

前言 1

第1章 COM+介绍 1

1.1 组件的革命 1

1.1.1 两个目标 1

1.1.2 单一的大模块与组件模型的比较 2

1.2 COM的产生 3

1.3 什么是COM 4

1.4 组件对象 6

1.5 服务器程序和客户端程序 6

1.6 COM怎样工作:接口和虚函数表 7

1.6.1 接口 7

1.6.2 vtable(虚函数表) 10

1.7 IUnknown 11

1.9 全局惟一标识 13

1.8 接口定义语言和类型库 13

1.10 COM API 14

第2章 COM基础:创建一个简单的组件和客户端程序 15

2.1 创建步骤 15

2.2 传统的Stopwatch实现 16

2.2.1 最初的Stopwatch的设计 16

2.2.2 建立Timers.dll库 17

2.3 创建StopwatchClient.exe 24

2.5 添加IUnknown 27

2.4 回顾一下起点 27

2.5.1 实现IUnknown的两种方法 28

2.5.2 IUnknown必须被完全实现 29

2.5.3 添加IUnknown 29

2.6 实现Querylnterface() 30

2.6.1 Querylnterface()规则 31

2.6.2 生成GUID 32

2.6.3 添加Querylnterface() 34

2.6.4 调用Querylnterface() 35

2.7 引用计数 36

2.7.1 实现引用计数 37

2.7.2 使用COM引用计数 38

2.8 构建一个类工厂 42

2.9 使用COM API 51

2.9.1 注册服务器程序 51

2.9.2 初始化和取消初始化COM 52

2.9.3 用CoCreateInstance()实例化组件对象 52

2.10 回顾一下COM组件的关键元素 55

第3章 ATL介绍 56

3.1 使用ATL应用程序向导创建COM服务器程序 56

3.1.1 运行ATL应用程序向导 57

3.1.2 完成向导 60

3.2 添加COM对象 63

3.2.1 线程模式 64

3.2.2 接口 67

3.2.4 支持ISupportErrorInfo 68

3.2.3 聚合 68

3.2.5 支持连接点 69

3.2.6 结束向导 70

3.3 增加Stopwatch的方法和属性 72

3.3.1 声明方法和属性 72

3.3.2 添加计时代码 74

3.3.3 注册组件 77

3.4 通过客户端程序访问Stopwatch组件 78

第4章 接口定义语言介绍 81

4.1 从MIDL编译器输出 81

4.2 IDL基础 81

4.3 接口 83

4.3.1 接口标题属性 83

4.3.2 接口声明 85

4.4 C++接口定义 86

4.5 方法 89

4.6 参数 92

4.7 属性 94

4.7.1 属性的标志 95

4.7.2 读写属性 95

4.7.3 属性的附加参数 96

4.8 定义类型库 97

4.9 向Stopwatch添加Overhead属性 99

第5章 COM的客户端程序及智能指针的使用 107

5.1 客户端程序概述 107

5.2 初始化和取消初始化COM子系统 107

5.3 实例化COM对象 109

5.4 将COM服务器程序定义导出到客户端程序 111

5.5 智能指针 114

5.6 _com_ptr_t模板类 114

5.7 新类型的IStopwatch 118

5.8 使用异常处理错误 121

5.9 混合使用智能指针与原始接口 123

5.10 跨COM边界传递接口 124

5.11 另一COM客户端程序示例 127

第6章 处理通称为BSTR的COM字符串 133

6.1 COM字符串基础 133

6.1.1 Unicode与ANSI数据类型 133

6.1.2 OLECHAR、LPOLESTR和LPCOLESTR 134

6.1.3 处理LPOLESTR 134

6.1.4 是否执行Unicode编译 135

6.1.5 TCHAR 135

6.1.6 使用BSTR处理不同大小的字符串 136

6.1.7 处理BSTR的常用API函数 137

6.1.8 跨COM边界的字符串内存管理 138

6.1.9 字符串转换函数 143

6.2 CComBSTR 145

6.3 _bstr_t 149

6.4 选择字符串封装器 154

7.1 有效的COM数据类型 156

第7章 其他COM数据类型 156

7.2 使用VARIANT_BOOL的Boolean值 157

7.3 变量数据类型 158

7.3.1 VARIANT结构 159

7.3.2 常用变量处理API函数 161

7.3.3 CComVariant 164

7.3.4 _variant_t 166

7.4 枚举 169

7.5 可选参数 170

7.6 指定默认值 171

7.7 传递数组 172

7.8 传递数目可变的自变量 174

7.9 传递COM对象 174

第8章 浏览IDispatch 176

8.1 创建支持双重接口的Stopwatch组件 176

8.1.1 在IDL中声明双重接口 177

8.1.2 接口继承和IDispatch 182

8.1.3 在组件内实现IDispatch 183

8.1.4 更新COM映射 183

8.2 更改组件的版本 184

8.2.1 更新文件版本 185

8.2.2 更新注册表中的新CLSID和类型库版本 186

8.3 测试IDispatch接口 187

8.4 在C++COM客户程序中调用IDispatch接口 188

9.1 HRESLUT结构 198

第9章 错误处理和组件调试 198

9.2 使用定制HRESULT进行错误处理 199

9.3 详细错误处理 202

9.3.1 IErrorlnfo接口 202

9.3.2 ISupportErrorInfo接口 202

9.3.3 在Stopwatch项目中添加ISupportErrorInfo 203

9.3.4 在客户程序中使用详细错误处理 210

9.3.5 _com_error 211

9.4 调试ATL代码 211

9.4.1 编写调试窗口的消息 212

9.4.2 使用ATLASSERT()验证一切正常 213

9.4.3 调试QueryInterface()和引用计数 213

9.5 在调试器中运行客户程序和服务器程序 214

第10章 事件 215

10.1 事件概述 215

10.2 连接点 217

10.3 创建支持事件的COM服务器程序 220

10.3.1 接口设计 220

10.3.2 添加倒计时组件并定义它的接口 223

10.3.3 实现ICountdown接口 229

10.3.4 实现连接点和激发事件 233

10.3.5 实现IProvideClassInfo2 238

10.4 接收组件的事件通知 239

10.4.1 创建ATL可执行文件 240

10.4.3 声明源接口实现 246

10.4.2 添加对话框 246

10.4.4 连接连接点 251

10.4.5 引用计数和连接点 254

10.4.6 使用内嵌监听器类避免循环引用计数 256

10.4.7 IDispEventImpl和IDispEventSimpleImpl 264

第11章 ActiveX 265

11.1 ActiveX控件 265

11.2 开发一个ActiveX控件 265

11.2.1 创建一个空的ATL项目 266

11.2.2 添加一个控件模板 266

11.2.3 StopwatchControl对象 269

11.2.4 编译、调试Stopwatch控件 278

11.2.5 为默认控件添加功能 281

11.2.6 添加一个按钮 286

11.2.7 添加一个定制属性页 289

11.2.8 持续性和属性包 296

12.1 为所有应用程序配置DCOM默认设置 298

第12章 DCOM 298

12.1.1 Default Properties 300

12.1.2 Default Security 302

12.1.3 Default Protocols 303

12.2 为DCOM配置一个特定的应用程序 303

12.2.1 配置客户端程序计算机 303

12.2.2 配置服务器程序计算机 305

12.3 使用DCOM编程 307

12.2.3 运行客户端程序 307

12.3.1 CoCreateInstanceEx() 308

12.3.2 一个DCOM客户端程序示例 310

12.4 查找DCOM故障 315

12.5 COM安全API函数 317

12.5.1 使用CoInitializeSecurity()配置安全许可 317

12.5.2 扮演客户端程序的身份:CoImpersonateClient() 319

12.5.3 用CoQueryClientBlanket()确定安全设置 319

12.6.1 代理服务器和存根 320

12.6 调度 320

12.6.2 定制调度 322

12.6.3 类型库调度 322

12.6.4 MIDL生成的代理服务器/存根 322

12.7 DCOM小结 323

第13章 线程 324

13.1 线程模型摸拟 325

13.1.1 单一线程模型 325

13.1.2 公寓线程模型 327

13.1.3 自由线程模型 329

13.1.4 双线程模型 331

13.1.5 线程中立模型 332

13.1.6 自由线程化调度器 334

13.2 跨公寓调度 336

13.2.1 拦截者-代理服务器和存根 336

13.2.2 使用工作者线程 338

13.3 与ATL同步 341

13.4 异步COM调用 345

13.4.1 在组件服务器程序中定义异步接口 346

13.4.2 异步地调用 348

13.4.3 异步方法完成通知 351

13.4.4 实现异步COM服务器程序 352

第14章 COM+的发展过程 354

14.1 为什么要用COM+ 354

14.2 COM+服务和术语介绍 355

14.2.1 组件服务 355

14.2.2 COM+服务 356

14.2.3 配置组件 357

14.3 COM+如何工作概述 358

14.3.1 对象上下文细述 359

14.3.2 并发和活动 360

14.4 COM+事务 361

14.4.2 调用事务支持 362

14.4.1 数据一致性 362

14.4.3 事务流 363

14.4.4 资源管理器和资源分发器 365

14.4.5 补偿资源管理器 367

14.5 用排队组件编写分离应用程序 368

14.6 发布和预定事件服务 369

14.7 控制对象生存期来增加可升级性能 370

14.7.1 对象缓冲 370

14.7.2 即时激活 371

14.7.3 IObjectControl接口 372

14.8 共享属性管理器 372

14.9 基于角色的安全 373

14.10 准备就绪 374

第15章 建立COM+系统 375

15.1 示例程序 375

15.2 创建一个可持续的组件 377

15.3 建立HotelReservation.exe客户端应用程序 382

15.4.1 COM+应用程序的两种类型 386

15.4 COM+应用程序 386

15.4.2 创建一个COM+应用程序 387

15.4.3 配置一个COM+应用程序 390

15.5 利用COM+事件服务 394

15.5.1 创建事件类 394

15.5.2 把组件添加到Component Services 396

15.5.3 在Component Services中配置事件类 398

15.5.4 创建一个事件预定者 399

15.5.5 在Component Services中配置预定者 401

15.5.6 为预定者发布事件 404

15.6 排队组件 405

15.6.1 创建一个可队列化组件 405

15.6.2 把组件配置为排队组件 408

15.6.3 实例化并调用排队组件 410

15.6.4 使用队列事件的分离、异步预定者 413

15.7 COM+事务 414

15.7.1 创建一个支持事务的组件 415

15.7.2 使用ObjectContext参加事务 419

15.7.3 为事务支持配置组件 421

15.7.4 通过编程在事务中包含可执行程序 426

15.8 配置组件激活 428

15.8.1 对象缓冲 429

15.8.2 即时激活 432

15.8.3 利用组件内部的构造字符串 433

15.9 基于角色的安全 435

15.8.4 其他的Activation设置 435

15.10 调试服务器程序组件 438

15.10.1 调试配置为库应用程序的服务器程序组件 438

15.10.2 配置为服务器应用程序/从Active Workspace调试 438

15.11 部署应用程序 439

15.11.1 应用程序代理服务器 440

15.11.2 服务器应用程序 441

15.12 使用ATL COM AppWizard建立一个MTS兼容的应用程序 441

15.13 最后的想法 448

返回顶部