第1章 欢迎使用“COM+开发人员参考库” 1
1.1“COM+开发人员参考库”的组织方式 2
1.2本书的组织方式 2
第2章 充分利用微软开发人员资源之一 3
2.1比较 MSDN和MSDN在线 4
2.2MSDN订阅 5
2.3MSDN的使用 7
2.4使用MSDN在线 11
第3章 “COM+开发人员参考库”使用指南 19
3.1本卷内容 19
3.2其他各卷内容 23
3.3获得更多信息 25
第4章 理解Windows DNA 2000及COM+所处的位置 27
4.1 Windows DNA定义 27
4.2关于Windows DNA 27
4.3关于Windows DNA 2000 28
4.4 N层开发模型 29
4.4.1从两层到N层应用程序 30
4.4.2用户服务层和Windows DNA 31
4.4.3业务服务层 33
4.4.4数据服务层 36
第5章 COM+应用程序概述 39
5.1 COM+应用程序的概念 39
5.2 COM+应用程序类型 40
5.3 COM+应用程序的组成部分 41
5.4开发COM+应用程序 41
第6章 设计COM+应用程序 43
6.1 COM+设计理念和原则 43
6.2创建分布式应用程序的微软工具 45
6.3使用UML设计COM+应用程序 46
6.3.1概念模型:应用程序的需求 46
6.3.2逻辑模型:应用程序的定义和规划 47
6.3.3物理模型:应用程序的体系结构 49
6.4常用的COM+设计技巧 49
6.4.1可扩展性设计 50
6.4.2可用性设计 50
6.4.3安全性设计 51
6.4.4部署设计 51
6.5特殊情况的高级COM+技术 52
6.6优化COM+业务逻辑层之间的交互 53
6.6.1优化COM+业务逻辑层与表示层之间的交互 53
6.6.2优化COM+业务逻辑层与数据层之间的交互 55
第7章 COM+服务入门 56
7.1第1步:创建一个事务组件 56
7.2第2步:跨多组件扩展一个事务 60
7.3第3步:重用组件 63
第8章 COM+提供的服务 70
8.1上下文 70
8.1.1激活 71
8.1.2跨上下文调用的侦听 72
8.2事务处理 73
8.2.1事务基础 73
8.2.2分布式事务 75
8.2.3贯穿COM+的自动事务 78
8.2.4事务编程 81
8.3并发性 87
8.3.1组件和线程 88
8.3.2同步 90
8.4 COM+中的安全性 91
8.4.1基于角色的安全性 92
8.4.2验证客户 97
8.4.3扮演客户 98
8.4.4保证库应用程序的安全性 100
8.4.5保证多层应用程序的安全 104
8.4.6组件编程的安全性 107
8.5对象缓冲 109
8.5.1对象缓冲池的工作原理 110
8.5.2用对象缓冲改善性能 111
8.5.3对可缓冲对象的要求 112
8.5.4缓冲池事务对象 113
8.5.5控制对象的生命期和状态 114
8.5.6使用对象构造器字符串 115
8.6即时激活 115
8.6.1设置完成位 117
8.6.2事务和JIT激活 118
8.6.3对象缓冲和JIT激活 118
8.7排队组件 119
8.7.1排队组件的体系结构 119
8.7.2消息解决方案 120
8.7.3排队处理的好处 121
8.7.4使用队列 122
8.7.5事务消息排队 122
8.7.6排队组件的例子 124
8.7.7开发限制 124
8.7.8开发排队组件 126
8.7.9启动排队组件 127
8.7.10标识排队组件 128
8.7.11激活排队组件 129
8.7.12例外处理 132
8.7.13使用排队组件的安全性 135
8.7.14排队组件的相互依赖性 136
8.8 COM+事件 136
8.8.1 COM+事件模型 136
8.8.2 COM+事件体系结构 137
8.8.3产生事件 141
8.8.4投递事件 141
8.8.5使用排队组件构造事件 142
8.8.6过滤事件 142
8.8.7 COM+事件例子 143
8.9共享属性管理器 144
8.10补偿资源管理器 145
第9章 编写COM+应用程序组件 146
9.1编写事务组件 146
9.2编写安全组件 146
9.3编写可缓冲组件 147
9.4编写排队组件 147
9.5编写COM+事件组件 148
9.6处理COM+中的错误 148
9.6.1COM+错误处理策略 149
9.6.2COM+怎样修改返回值 150
9.6.3错误隔离和错误快速处理策略 150
9.6.4找到错误的来源 150
9.6.5错误代码解释 151
9.6.6故障诊断 151
9.6.7联系支持 152
9.7调试COM+应用程序 152
9.7.1调试用C++编写的组件 152
9.7.2调试用Visual Basic编写的组件 154
第10章 创建和配置COM+应用程序 158
10.1创建COM+应用程序 158
10.1.1创建新的COM+应用程序 158
10.1.2安装新组件 159
10.1.3导入组件 160
10.1.4从COM+应用程序中删除组件 160
10.1.5删除COM+应用程序 161
10.2配置COM+应用程序 161
10.2.1配置事务 163
10.2.2配置同步 164
10.2.3安全设置 166
10.2.4配置对象缓冲 170
10.2.5配置JIT激活 173
10.2.6配置队列 174
10.2.7配置COM+事件 175
10.2.8配置库应用程序 176
10.2.9在调用者上下文中实施激活 176
10.3从MTS包到COM+应用程序的转换 177
10.3.1 MTS的自动转换 177
10.3.2 MTS的人工转换 178
10.3.3 COM+转换的结果和问题 178
10.4自动化COM+管理 179
10.4.1 COMAdmin对象概述 179
10.4.2在COM+目录中检索集合 184
10.4.3在COM+目录中设置属性和保存更改 186
10.4.4处理管理错误 188
10.4.5事务内的管理操作 189
10.4.6 MTS管理库 190
第11章 COM+应用程序的部署和注册 192
11.1部署COM+应用程序 192
11.2部署应用程序代理 192
11.3 COM+目录 193
11.4 COMREPL复制工具 194
11.4.1 COMREPL的使用 194
11.4.2从复制中能得到什么 195
11.4.3复制的步骤 196
11.4.4文件管理 196
11.4.5日志和错误报告 197
第12章 微软分布式事务协调器 199
12.1事务属性 200
12.2分布式事务 201
12.2.1分布式事务的工作原理 201
12.2.2从应用程序开发人员的角度看事务 202
12.2.3从资源管理器的角度看事务 202
12.2.4从事务管理器角度看事务 203
12.3提交协调 203
12.3.1只读提交优化 204
12.3.2委派提交优化 204
12.4携带自己的事务 204
12.4.1创建BYOT对象 205
12.4.2继承人工事务 205
12.5其他事务标准 205
12.5.1 X/Open分布式事务处理标准 205
12.5.2 OLE事务与X/Open DTP之间的不同 206
12.5.3遵循X/Open DTP XA标准产品互操作性 207
12.5.4使用带有X/Open兼容的事务处理监视器的OLE事务兼容资源管理器 207
12.5.5 OSI事务处理格式和协议 207
12.6 OLE事务模型 208
12.7使用微软分布式事务协调器 208
12.8在应用程序中使用事务 209
12.8.1应用程序是怎样初始化一个事务的 210
12.8.2使用应用程序更新两个SQL服务器数据库 211
12.8.3事务传递:从应用程序到应用程序 214
12.8.4事务提交 214
12.8.5事务终止 215
12.9开发OLE事务资源管理器 215
12.9.1资源管理器显式地初始化事务 216
12.9.2 SQL Server怎样显式地初始化一个事务 216
12.9.3资源管理器隐式地初始化事务 217
12.9.4 SQL Server怎样隐式地初始化一个事务 218
12.9.5事务从应用程序到资源管理器的传递 219
12.10事务的生命期 222
12.10.1资源管理器的启动 223
12.10.2客户应用程序的启动 224
12.10.3事务初始化 224
12.10.4资源管理器的加入 225
12.10.5创建一个输出对象Ⅰ 225
12.10.6创建一个输出对象Ⅱ 226
12.10.7输出事务Ⅰ 227
12.10.8输出事务Ⅱ 228
12.10.9加入事务Ⅰ 229
12.10.10加入事务Ⅱ 230
12.10.11事务提交阶段1——准备Ⅰ 231
12.10.12事务提交阶段1——准备Ⅱ 232
12.10.13事务提交阶段2——提交Ⅰ 233
12.10.14事务提交阶段2——提交Ⅱ 234
12.10.15事务恢复 235
12.11实现一个资源管理器 235
12.11.1开发环境 236
12.11.2实现接口 236
12.11.3由进程内应用程序组件初始化的事务 238
12.11.4事务传递 238
12.11.5获取whereabouts 239
12.11.6从事务中获得事务分配器 240
12.11.7参与两阶段提交协议 240
12.12开发XA兼容的资源管理器 242
12.12.1把OLE事务映射到XA协议 242
12.12.2事务状态 243
12.12.3实现算法 244
12.12.4 XA事务生命期的步骤 244
12.12.5 XA恢复过程 249
12.12.6映射XA接口 250
12.13使用XA兼容事务管理器应用程序 250
12.14开发缓冲资源管理器 250
12.15使用带有其他TIP事务管理器的MS DTC 251
12.15.1 TIP扩展的背景 252
12.15.2 TIP到OLE事务的扩展 253
12.15.3使用方案 253
第13章 补偿资源管理器 256
13.1使用CRM 256
13.1.1安装CRM组件 256
13.1.2启动和恢复 257
13.2开发一个CRM 257
13.2.1在CRM中的一般操作 258
13.2.2在CRM中恢复 259
13.2.3在CRM中的错误处理 259
13.3高级CRM主题 260
13.3.1注册设置 260
13.3.2 CRM日志文件 261
13.3.3监视 261
13.3.4隔离性 261
13.3.5对象缓冲 261
13.3.6集群 262
13.4 CRM故障诊断 262
13.5设计建议 263
13.6 CRM接口 264
13.7监视接口 265
13.8使用监视接口 265
第14章 资源分配器 266
14.1资源 267
14.2分配管理器 267
14.3资源持有者 267
14.4资源分配器请求 267
14.5把资源分配器作为一个COM组件实现 268
14.6线程问题 268
14.7库存统计管理器 268
14.8资源缓冲 268
14.8.1在非加入的库存中的资源 268
14.8.2在加入的库存中的资源 269
14.8.3处于非加入的使用状态的资源 269
14.8.4处于加入的使用状态的资源 269
14.9分配资源 269
14.10加入到事务中 269
14.11自动回收资源 270
14.12跟踪资源 270
14.13销毁不活动的资源 270
14.14非事务的资源 270
14.15在没有COM+的情况下进行操作 270
14.16资源分配器的启动和关闭 270
14.17实现资源分配器 271
14.18类型 271
第15章 COM+工具 273
15.1 COM+度规概述 273
15.2 COM+度规过滤 274
15.3 Visual Studio Analyzer COM+Event Bridge示例 275
15.4收集COM+度规 275
第16章 使用MIDL编译器 277
16.1调用MIDL编译器 277
16.2响应文件 278
16.3 C预处理器需求和选项 278
16.3.1 C预处理器对于MIDL的需求 278
16.3.2验证预处理器选项 279
16.4 C编译器的需求和选项 280
16.4.1 C编译器对于MIDL的需求 280
16.4.2 C编译器对于Microsoft Windows 3.x中的回调需求 280
16.4.3 C编译器关于代理/存根的定义 281
16.5使用_midl预定义常量 282
16.6 MIDL和RPC 283
16.6.1为RPC接口生成的文件 283
16.6.2为指定32位平台锁定存根 283
16.7 MIDL和COM 284
16.7.1为COM接口生成文件 285
16.7.2调度OLE数据类型 286
16.8 MIDL和ODL 287
16.8.1用MIDL产生类型库 287
16.8.2产生类型库所需的其他文件 287
16.8.3 MIDL和MkTypLib的区别 288
16.8.4 MIDL中ODL语言的特点 290
16.8.5由单个IDL文件生成代理DLL和类型库 291
第17章 接口定义和类型库 292
17.1分布式对象中的接口 292
17.2 COM、 DCOM和类型库 292
17.3接口定义(IDL)文件 293
17.4 IDL属性 295
17.4.1别名和调度属性 295
17.4.2异步属性 296
17.4.3数组和有大小的指针属性 296
17.4.4数据类型属性 297
17.4.5方向属性 298
17.4.6函数调用属性 298
17.4.7接口头属性 298
17.4.8性能属性 299
17.4.9指针类型属性 299
17.4.10结构和共同体属性 299
17.4.11类型库属性 299
17.5应用程序配置文件 301
17.6 ACF属性 301
17.6.1绑定ACF属性 302
17.6.2存根优化ACF属性 302
17.6.3类型转换和调度ACF属性 302
17.6.4内存管理ACF属性 303
17.6.5错误和例外处理ACF属性 303
17.6.6在IDL文件中使用ACF属性 303
17.7 MIDL数据类型 303
17.7.1 MIDL基类型 304
17.7.2 MIDL数组 305
17.7.3 MIDL类型定义 306
17.7.4 MIDL枚举类型 307
17.7.5 MIDL结构 307
17.7.6 MIDL共同体 307
17.7.7 MIDL绑定处理 308
17.8导入文件和类型库 308
17.9导入系统头文件 309
第18章 MIDL命令行参考 311
18.1常用MIDL命令行语法 311
18.2响应文件命令 312
第19章 MIDL语言参考 344
第20章 MIDL编译器错误和警告 492
20.1错误和警告消息格式 492
20.2预处理器错误 493
20.3编译器错误 494
COM+词汇表 533