第1章 绪论 1
1.1 软件组件 3
1.1.1 软件组件特点 3
1.1.2 软件组件模型 4
1.1.3 软件组件实现条件 5
1.1.4 微软组件技术 5
1.2 组件对象模型(COM) 6
1.2.1 COM的特点 6
1.2.2 COM组件分类 7
1.2.3 COM的结构 9
1.3 设计模式基础 14
1.3.1 设计模式概述 14
1.3.2 典型设计模式实现 17
1.4 C++预备知识 36
1.4.1 C++的面向对象特征及实现 36
1.4.2 RTT Ⅰ 39
1.4.3 模板 41
1.4.4 动态链接库 43
1.5 Visual C++开发COM应用 44
小结 45
第2章 COM的技术基础 46
2.1 基础知识 46
2.1.1 方法与结果 46
2.1.2 全球唯一标识符 47
2.1.3 接口定义语言 48
2.2 COM接口 49
2.2.1 接口的结构与描述 50
2.2.2 IUnknown接口 50
2.2.3 IUnknown接口的实现 54
2.2.4 客户测试程序的实现 56
2.3 COM对象 57
2.3.1 注册表 57
2.3.2 COM库 58
2.3.3 类厂 61
2.3.4 COM组件与客户程序的交互过程 65
2.4 COM组件的实现 66
2.4.1 类厂的实现 66
2.4.2 对象的实现 69
2.4.3 引出函数的实现 69
2.4.4 客户程序的实现 70
小结 72
第3章 COM的高级特性 73
3.1 COM重用模型 73
3.1.1 包容和聚合 73
3.1.2 包容的实现 74
3.1.3 聚合的实现 77
3.1.4 COM组件的MFC实现 84
3.2 COM跨进程特性 88
3.2.1 进程外组件 89
3.2.2 列集 89
3.2.3 标准列集 90
3.2.4 自定义列集 94
3.3 COM多线程模型 95
3.3.1 线程与进程 95
3.3.2 套间 96
3.3.3 客户的套间 97
3.3.4 对象的套间 98
3.3.5 套间与通讯协议 99
小结 100
第4章 自动化对象 101
4.1 自动化对象基础 101
4.1.1 类型库 101
4.1.2 IDispatch接口 102
4.1.3 自动化兼容的数据类型 106
4.2 自动化接口的实现 109
4.2.1 类型库的支持 109
4.2.2 Invoke函数的实现 109
4.3 自动化对象的使用 110
4.3.1 晚绑定 111
4.3.2 早绑定 112
4.4 自动化对象的编程 112
4.4.1 MFC的支持 112
4.4.2 自动化实例 113
小结 113
第5章 可连接对象 115
5.1 概念与模型 115
5.1.1 轮询 115
5.1.2 通知 116
5.1.3 出接口 117
5.2 连接点机制 118
5.2.1 IConnectionPointContainer接口 119
5.2.2 IConnectionPoint接口 119
5.2.3 接收器的实现 119
5.3 连接过程 120
5.3.1 连接过程 120
5.3.2 事件的激发与处理 120
5.3.3 IDiapatch出接口 121
5.4 可连接对象的编程 122
5.4.1 MFC对连接的支持 122
5.4.2 源对象的MFC实现 125
5.4.3 接收器的MFC实现 126
小结 128
第6章 用ATL开发COM应用 129
6.1 ATL的关键技术 130
6.1.1 模板类 130
6.1.2 多继承 131
6.2 ATL框架结构 132
6.2.1 ATL的基本特征 132
6.2.2 ATL对组件宿主的支持 132
6.2.3 ATL对IUnknown接口的支持 133
6.2.4 ATL对类工厂的支持 137
6.3 进程内组件的实现 138
6.3.1 建立ATL工程 138
6.3.2 增加ATL对象类及接口 139
6.3.3 添加接口函数及实现 141
6.3.4 ATL工程的结构分析 142
6.3.5 客户程序 143
6.4 多接口组件的实现 144
6.4.1 增加接口 144
6.4.2 接口入口表的完善 145
6.4.3 接口方法 146
6.4.4 客户程序 146
6.5 自动化组件的实现 150
6.5.1 服务器的实现 150
6.5.2 客户机的实现 152
小结 152
第7章 ActiveX技术 153
7.1 ActiveX概要 153
7.1.1 ActiveX的定义 153
7.1.2 ActiveX的内容 153
7.1.3 ActiveX与Java的比较 153
7.2 ActiveX控件 154
7.2.1 ActiveX控件相关技术 154
7.2.2 ActiveX控件结构 156
7.2.3 ActiveX控件包容器 156
7.3 ActiveX控件开发 157
7.3.1 建立工程框架 157
7.3.2 属性、方法以及事件的添加 159
7.3.3 实现属性表 165
7.3.4 在包容程序中使用ActiveX控件 167
小结 168
第8章 数据库访问技术 169
8.1 MFC ODBC数据库编程 169
8.1.1 数据库通信机制 169
8.1.2 MFC ODBC简介 170
8.1.3 MFC ODBC数据库访问技术 171
8.2 OLE DB技术 174
8.2.1 OLE DB原理 175
8.2.2 OLE DB客户数据库访问的两种途径 182
8.3 ADO技术 195
8.3.1 ADO的概念 195
8.3.2 ADO的主要对象 195
8.3.3 ADO与其他编程接口的关系 196
8.3.4 使用ADO编程 197
8.4 OLE DB客户应用程序编程实例 197
8.4.1 实例概述 198
8.4.2 实例实现过程 198
8.4.3 编译并运行工程 236
小结 242
第9章 DCOM分布式应用技术 243
9.1 DCOM概述 243
9.1.1 从COM转向DCOM 244
9.1.2 为什么要做分布式应用 244
9.2 DCOM的结构与特性 244
9.2.1 组件和复用 245
9.2.2 位置独立性 245
9.2.3 语言无关性 246
9.2.4 连接管理 247
9.2.5 可扩展性 247
9.2.6 对称的多进程处理(SMP) 247
9.2.7 灵活的配置 247
9.2.8 功能的发展:版本化 249
9.2.9 执行性能 250
9.2.10 带宽及潜在问题 251
9.2.11 在应用间共享连接管理 252
9.2.12 优化网络的来回旋程 253
9.3 安全性 254
9.3.1 安全性设置 255
9.3.2 对安全性的编程控制 256
9.3.3 Internet上的安全性 257
9.4 负载平衡 258
9.4.1 静态负载平衡 258
9.4.2 动态负载平衡 259
9.5 容错性 260
9.6 配置管理 261
9.6.1 安装 261
9.6.2 管理 262
9.6.3 协议无关性 262
9.6.4 平台无关性 263
9.6.5 平台二进制标准 263
9.6.6 跨平台的互操作性标准 263
9.6.7 使用大多数的DCE RPC 263
9.6.8 和其他Internet协议的无缝集成 264
9.6.9 虚拟私人网络上的DCOM 264
9.6.10 Internet上的DCOM 264
9.6.11 集成HTML和分布式计算 265
小结 265
第10章 COM+应用 266
10.1 COM+基本结构 266
10.1.1 Windows DNA策略 266
10.1.2 COM+基本结构 268
10.1.3 对象环境 270
10.2 COM+系统服务介绍 271
10.2.1 COM+队列组件 271
10.2.2 COM+事件模型 272
10.2.3 负载平衡 273
10.2.4 内存数据库(IMDB) 274
10.2.5 对其他服务的增强 275
10.3 COM+应用开发 276
10.3.1 应用开发支持 277
10.3.2 基于属性的C++编程语言 277
小结 279
第11章 .NET组件技术 280
11.1 .NET框架 281
11.1.1 .NET框架结构 281
11.1.2 .NET公共语言运行库 282
11.1.3 .NET基础类库 282
11.1.4 .NET的用户和程序接口 283
11.1.5 中间语言和JIT编译器 285
11.1.6 .NET编程语言 286
11.1.7 .NET程序集 287
11.1.8 .NET命名空间 289
11.1.9 元数据 290
11.1.10 COM的角色 290
11.1.11 .NET框架中的XML 291
11.2 .NET面向组件编程 291
11.2.1 面向组件和面向对象编程的比较 292
11.2.2 .NET组件开发中的接口和继承 293
11.3 .NET组件与COM组件的互操作 293
11.3.1 .NET组件调用COM组件 294
11.3.2 COM组件调用.NET组件 295
小结 296