第1部分 Windows DNA平台策略 3
第1章 Windows 2000与Windows DNA 3
1.1 PC机从简单商务应用到企业应用的发展 3
1.1.1 有限的桌面系统发展余地 3
1.1.2 新的PC机应用体系 4
1.2 COM的发展 5
1.2.1 DLL 5
1.2.2 OLE 6
1.2.3 COM 7
1.2.4 DCOM 7
1.2.5 COM+ 8
1.3 Windows平台的发展 8
1.3.4 Windows NT扩展包 9
1.3.3 Windows 95/98 9
1.3.2 Windows NT 9
1.3.1 Windows 3.x 9
1.3.5 Windows 2000 10
1.4 Windows DNA体系 10
1.4.1 Windows DNA的目标与特性 10
1.4.2 Windows DNA的三层结构 11
1.4.3 Windows 2000与Windows DNA的关系 14
第2部分 COM编程与应用基础 17
第2章 组件与接口 17
2.1 组件编程体系 17
2.1.1 COM组件对象模型 17
2.1.2 COM应用体系结构 20
2.1.3 COM组件的编程技术 22
2.1.4 COM组件开发的资源 29
2.2.1 接口的作用与特性 30
2.2 COM组件的核心是接口 30
2.2.2 接口的内存结构与C++实现 31
2.2.3 实现真正意义上的COM接口 37
第3章 组件的实现与发布 41
3.1 QueryInterface实现 41
3.1.1 QueryInterface惟一定义组件 41
3.1.2 QueryInterface实施规则 44
3.1.3 接口不变性的实质 45
3.1.4 建立组件的新版本 46
3.1.5 QueryInterface的使用 46
3.2 COM应用中的生存期维护 49
3.2.1 生存期作用与意义 49
3.2.2 引用计数技术 50
3.2.3 AddRef与Release函数的实现与使用 51
3.2.4 优化使用引用计数 53
3.3 组件的DLL发布 55
3.3.1 进程中组件服务器实现 55
3.3.2 DLL的输出业务逻辑 56
3.4 组件的注册 58
3.4.1 同组件相关的注册表结构与信息 58
3.4.2 实现组件注册的函数 60
3.4.3 客户通过注册表使用组件DLL 61
3.5 创建COM组件的类厂 61
3.5.1 使用CoCreateInstance函数完成组件的标准创建 61
3.5.2 类厂的作用及其工作机制 63
3.5.3 类厂的实现 65
3.5.4 类厂的两种应用方式 67
3.5.5 组件开发和使用的完整过程 69
3.5.6 类厂实现的复用 70
3.5.7 关于注册和生命期维护的总结 71
3.5.8 COM库函数的使用 72
第4章 组件的使用技术 73
4.1 组件的包容 74
4.1.1 包容的逻辑 74
4.1.2 包容的实现 75
4.1.3 包容的应用 78
4.2 组件的聚合 79
4.2.1 对组件聚合的分析 79
4.2.2 聚合的外部组件实现 80
4.2.3 聚合内部组件的实现 83
4.2.4 聚合组件接口生存期的维护 91
4.2.5 聚合组件的综合情形 93
4.2.6 聚合内部组件的多个或者所有接口 94
4.3.1 关于包容和聚合的说明 96
4.3 组件复用方式的总结 96
4.3.2 实用化的其他组件复用方式 97
4.4 关于COM组件的总结 98
4.4.1 完整的组件示例代码 98
4.4.2 完整的客户程序示例代码 98
第3部分 COM+企业功能应用与编程 103
第5章 简化组件应用的技术 103
5.1 IDL/MIDL 103
5.1.1 IDL与MIDL的一般知识 103
5.1.2 利用IDL/MIDL描述COM+接口和组件对象 107
5.2 调度接口与自动化 109
5.2.1 IDispatch接口的工作机制 110
5.2.2 类型库 115
5.3 客户使用组件方式的简化 119
5.3.1 智能接口指针 120
5.3.2 C++包装类 123
5.4 组件的实现方式可供简化的内容 125
5.4.1 IUnknown接口基类 126
5.4.2 类厂基类的实现原理 126
5.5 对开发环境的说明 127
5.5.1 用ATL向导建立简单COM组件 128
5.5.2 用Visual Basic向导建立组件 129
第6章 进程外组件的调用 131
6.1 跨进程运行组件的工作机制 132
6.1.1 本地过程调用技术 132
6.1.2 代理/存根DLL调整模式 133
6.1.3 利用IDL/MIDL建立代理/存根DLL 134
6.2 本地EXE组件开发与调用 137
6.2.1 EXE组件的人口逻辑 137
6.2.2 EXE组件的创建过程 138
6.2.3 EXE服务器的注册 139
6.2.4 类厂的注册和注销 139
6.2.5 EXE服务器生存期的维护 140
6.3 远程组件的应用 141
6.3.1 配置EXE服务器的远程访问能力 141
6.3.2 客户对远程组件的使用 142
第7章 COM+体系 145
7.1 COM+支持企业应用的功能 145
7.1.1 COM+以COM为基础 145
7.1.2 COM+企业服务功能 146
7.1.3 COM+的应用特性 147
7.2 COM+系统运行机制 147
7.2.1 截取控制策略 148
7.2.2 组成系统的元素 149
7.3.1 COM+一般使用过程 154
7.3 COM+功能的应用 154
7.3.2 组件服务管理工具 156
7.3.3 COM+编程的一般知识 159
第8章 COM+安全与同步 162
8.1 安全性机制 162
8.1.1 安全性概述 162
8.1.2 鉴定 163
8.1.3 授权 165
8.1.4 COM+应用的身份标识 167
8.2 组件调用的并发控制 169
8.2.1 套间的概念 170
8.2.2 不同类型套间的并发访问控制 171
8.2.3 COM+标准套间NA并发调用 172
9.1.1 事务功能需求 175
9.1 事务概述 175
第9章 事务服务 175
9.1.2 事务的ACID特性 176
9.2 事务服务体系 178
9.2.1 构成事务体系的环节及其作用 178
9.2.2 事务的作用过程 180
9.3 事务应用性能与优化 184
9.3.1 及时激活机制 185
9.3.2 组件对象状态数据的保存 186
9.3.3 对象池 188
9.4 COM+事务组件的编程 190
9.4.1 事务性组件需要实现的功能 190
9.4.2 编写事务组件的规则 192
9.4.3 扩展的事务控制 192
9.5 补偿资源管理器 195
9.4.4 事务性组件的开发和使用过程 195
9.5.1 CRM体系 196
9.5.2 CRM编程 198
第10章 COM+队列服务 200
10.1 队列服务机制 200
10.1.1 企业应用中的异步通信 200
10.1.2 COM+消息队列 201
10.1.3 消息队列的运行体系 203
10.2 队列组件的设计与应用 206
10.2.1 队列组件的限定 206
10.2.2 队列与其他COM+服务功能的协调应用 208
10.2.3 设置COM+应用所涉及的队列属性 209
10.2.4 深入理解队列服务的工作要点 210
10.3.1 队列操作方面的编程 211
10.3 COM+队列属性的编程应用 211
10.3.2 创建队列组件的名字对象 213
10.3.3 队列编程示例 214
第11章 事件服务 216
11.1 事件功能概述 216
11.1.1 紧密连接事件的通知结构 216
11.1.2 企业应用的松散连接事件 217
11.1.3 事件服务的特性 217
11.2 COM+事件服务体系 218
11.2.1 构成COM+事件服务的环节 219
11.2.2 建立COM+事件服务应用 221
11.2.3 事件发布的一般过程 222
11.3 COM+事件服务的定制机制 223
11.3.1 实现订阅者对特定事件服务的需要 223
11.3.2 发布者对COM+事件服务功能的定制 225
11.4.1 事件应用中需要编程的环节 228
11.4 COM+事件服务应用的编程 228
11.4.2 可供事件服务编程使用的接口 229
11.4.3 事件应用的编程示例 231
11.5 事件与其他服务功能的协调使用 232
11.5.1 事件与队列 232
11.5.2 事件与事务 233
11.5.3 事件安全性 234
第12章 IMDB与DLB 235
12.1 IMDB内存数据库技术 235
12.1.1 IMDB体系的环节 236
12.1.2 IMDB的基本运作过程 238
12.2 IMDB与应用 238
12.2.1 IMDB服务程序和IMDB数据源 239
12.2.2 设置IMDB事务特性 240
12.2.4 合理使用IMDB服务功能 242
12.2.3 设定IMDB的安全性 242
12.2.5 利用ADO间接操作OLE DB接口 244
12.3 动态负载平衡 245
12.3.1 动态负载平衡机制 245
12.3.2 为组件指定动态负载平衡的特性 246
12.3.3 负载平衡应用的说明 247
12.3.4 CLB应用的注意事项 247
第13章 一个COM+应用的完整示例 248
13.1 应用功能与结构的设计 248
13.1.1 功能说明 248
13.1.2 应用结构的设计 249
13.1.3 应用程序的执行流程 249
13.2 示例代码 250
13.2.1 组件类代码 250
13.2.3 客户测试程序 259
13.2.2 组件对象的编译、注册与设置 259
第14章 IIS与COM+ 262
14.1 Web应用基础 262
14.1.1 Web网页和Web网站 262
14.1.2 Web工作原理 263
14.1.3 客户端动态的Web应用 266
14.1.4 服务器端动态的Web应用 268
14.2 ASP内容体系 270
14.2.1 ASP页面中嵌入的命令 270
14.2.2 ASP的执行过程 272
14.2.3 ASP应用程序要完成的核心功能 273
14.3 实现ASP应用 277
14.3.1 选定浏览摸式 277
14.3.2 构造Web活动 278
14.4.1 处理HTML窗体 280
14.4 ASP通用任务的实现 280
14.4.2 使用Cookie 282
14.4.3 对ASP错误的处理 285
14.4.4 重定向功能 286
14.4.5 处理二进制数据 288
14.4.6 下载文件 289
14.4.7 发送E-mail 290
14.4.8 开发浏览器适应功能 290
14.4.9 开发JavaScript对象 291
14.5 ASP组件的开发与应用 294
14.5.1 ASP组件 294
14.5.2 在ASP组件中调用ASP内置对象 296
14.6 事务性ASP应用 300
附录A 聚合复用内外部组件的完整示例代码 302
附录B 词汇表 324
主要参考文献 327