第一部分 Windows DNA 和COM 3
第1章Windows DNA和COM 3
1.1 Windows DNA 4
1.2 HTML 5
1.2.1 无状态环境 5
1.3 Windows DNA服务 6
1.3.1 Windows DNA服务:COM 6
1.3.2 Windows DNA服务:DNA核心 8
1.3.3 Windows DNA服务:工具 9
1.4 DNA功能综述 12
1.4.1 浏览器 12
1.4.2 IIS 12
1.4.3 ASP 13
1.4.4 MTS 14
1.4.5 MSM Q和SQL Server 14
1.5 小结 17
第2章 多层组件体系设计 18
2.1 综述 19
2.2 Ad-Hoc设计 19
2.3 基本应用程序分界:表达、逻辑和数据服务 20
2.4 三层设计 21
2.5 保持层平衡 22
2.6 多层设计 23
2.7 本地定位或分布式的 26
2.8 优秀的设计技术 26
2.8.1 将应用程序抽象为层 26
2.8.2 找出组件 26
2.8.3 创建接口 27
2.8.4 组件实现 28
2.8.5 设计约束 28
2.8.6 设计目标 29
2.9 设计工具 32
2.10 小结 33
第二部分 高级COM编程技术 37
第3章 永久性存储 37
3.1 复合文件的COM接口 38
3.1.1 IStorage和IStream 38
3.2 结构化存储函数 39
3.2.1 SigCreateDocFile( ) 39
3.2.3 SigOpenStorage( ) 40
3.3 结构化存储接口 41
3.3.1 IStorage 41
3.3.2 IStream 48
3.3.3 IRootStorage 52
3.3.4 IPersist 53
3.3.5 IPersistStorage 53
3.3.6 IPersistStream 54
3.3.7 IPersistFile 57
3.4 结构化存储浏览器 59
3.5 微软管理控制台示例 61
3.6 通用数据传送和通知 61
3.6.1 IDataObject 61
3.6.2 IAdviseSink 66
3.6.3 IDataAdviseHolder 67
3.7 采样通知的实现 69
第4章 别称 73
4.1 IMoniker 76
4.1.1 别称的接口 76
4.1.2 IEnumMoniker 84
4.1.3 IBindCtx 86
4.2 别称的类型 88
4.2.1 文件别称 88
4.2.2 CBL别称 89
4.2.3 复合别称 89
4.2.4 类别称 89
4.2.5 项别称 89
4.2.6 指针别称 89
4.2.7 反别称 89
4.3 小结 89
第5章 可连接对象 90
5.1 连接点 91
5.2 连接点容器 93
5.3 连接点示例 93
5.3.1 事件接收器 97
5.4 Visual Basic 106
5.4.1 重写事件源 107
5.4.2 ATL代理生成器 109
5.4.3 编写Visual Basic客户程序 112
5.5 不同工具如何实现事件 113
5.5.1 事件和Visual Basic 113
5.5.2 事件和C+ + Builder 115
5.6 小结 119
第6章 COM线程 120
6.1 PC线程的发展 121
6.2 线程类型 121
6.2.1 工作者线程 122
6.2.2 报文队列线程 123
6.2.3 窗口线程类型 124
6.2.4 单元线程 127
6.2.5 线程组合 129
6.3 COM线程模型 130
6.3.1 单线程服务器 131
6.3.2 单元线程服务器 131
6.3.3 自由线程服务器 133
6.4 线程同步 137
6.4.1 线程的本地存储 137
6.4.2 去除并行问题 137
6.5 小结 144
第7章 COM及其注册表 145
7.1 注册表的API 146
7.2 Regedit和Regedt32 147
7.2.1 导入和导出注册文件 148
7.3 COM注册表结构 149
7.3.1 文件扩展名 149
7.3.2 ProgID 150
7.3.3 AppID 153
7.3.4 CLSID 156
7.3.5 接口 158
7.3.6 TypeLib 159
7.4 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole 161
7.4.1 允许和禁止DCOM 161
7.4.2 缺省权限 162
7.4.3 继承的安全性保证 162
7.5 注册一个COM服务器 162
7.5.1 Regsvr32 162
7.5.2 自注册离线服务器 164
7.5.3 结构 165
第8章 COM的优化、继承和集合 167
8.1 DCOM的速度 168
8.1.1 对象定位 168
8.1.2 网络循环 169
8.1.3 混合线程模型 169
8.2 远程动作 174
8.3 远程索引记数 175
8.3.1 强制回应 176
8.4 代理进程 176
8.4.1 用户代理 179
8.5 I Class Factory 180
8.6 继承性 182
8.6.1 集合 182
8.7 小结 188
第三部分 带有DCOM的分布式组件 191
第9章 DCOM在NT服务器上的应用 191
9.1 NT服务模板 193
9.1.1 函数main( )与Winmain( ) 193
9.1.2 函数ServiceMain( ) 195
9.1.3 函数ServiceCtrlllandle( ) 197
9.2 ATL与服务 199
9.2.1 DCOM IPC 210
9.3 实用程序 212
9.3.1 服务控制面板附属程序 212
9.3.2 Windows NT诊断程序(WinMsd.exe) 212
9.3.3 服务控制器程序(Se exe) 213
9.3.4 事件浏览器 213
9.4 OpenSCManaer() 214
9.4.1 服务句柄 214
9.4.2 对服务的操作 214
9.5 注册表 215
9.6 事件日志 216
9.6.1 报文编译器(MC) 216
9.6.2 RegisterEventSource( ),DeregisterEvent-Souree( )和Report Event( ) 219
9.6.3 事件记录浏览器 219
9.7 调试 221
9.7.1 系统帐号 221
9.7.2 NT任务管理器(NT Task Manager):调试 221
9.7.3 用AT命令启动调试器 221
9.8 小结 221
第10章 打包 222
10.1 领会打包 223
10.2 类库打包 223
10.3 标准打包 224
10.3.1 确定DLL入口点 226
10.3.2 类定义 227
10.3.3 定义IID、TypeLib GI ID与CLSID 231
10.3.4 代理与存根的定义 232
10.3.5 注册文件 238
10.3.6 MIDL输出文件的转换 239
10.4 自定义打包 241
10.4.1 对象类的说明 242
10.4.2 对象类的定义 244
10.4.3 代理类的定义 249
10.4.4 客户 253
第11章 安全性 256
11.1 COM与DCOM的安全性比较 257
11.1.1 COM的安全性与SSPI 257
11.2 NT安全性 257
11.2.1 域 257
11.2.2 安全性描述符 258
11.2.3 访问控制表 262
11.2.4 用户身份验证 271
11.3 冒名 272
11.3.1 函数CoImpersonateClient( )与CoRrevertToSelf( ) 272
11.3.2 掩饰 274
11.4 说明安全性 274
11.5 编程安全性 274
11.5.1 安全罩 274
11.5.2 IClientSecurity接口 275
11.5.3 访问与启动的安全性 277
第12章 配置与纠错 278
12.1 设置访问控制列工具(DCOMCNFC) 279
12.1.1 遗留COM服务器 279
12.1.2 创建自动服务器 282
12.1.3 缺省属性 285
12.1.4 缺省安全性 286
12.1.5 配置COM服务器 289
12.1.6 服务器位置 290
12.1.7 服务器安全性 290
12.1.8 服务器身份 292
12.2 OLEView 293
12.2.1 OLEView的不足 293
12.2.2 用OLEView配置COM对象 294
12.2.3 代理 295
12.2.4 访问允许 295
12.3 纠错处理 297
12.3.1 纠错策略 298
12.3.2 ISupportEerrotInfo接口 299
12.4 小结 305
第四部分 运用MTS的组件管理与应用 309
第13章 MTS的体系结构与管理 309
13.1 MTS的特性 310
13.1.1 可扩展性 310
13.1.2 并行管理 310
13.1.3 执行性能 311
13.1.4 可靠性 311
13.1.5 安全性 311
13.1.6 分布式事务处理 311
13.1.7 组件框架集成化 311
13.2 MTS 的历程 312
13.3 如何使用MTS 312
13.3.1 支持中层应用服务器 312
13.3.2 简单应用到多层应用 313
13.4 MTS的体系结构 313
13.4.1 MTS组件 314
13.4.2 MTS对象 315
13.4.3 信息包 315
13.4.4 代理对象 315
13.4.5 上下文对象 315
13.4.6 活动 316
13.4.7 MS DTC 316
13.4.8 事务对象 316
13.4.9 MTS可执行程序(MTS Executive) 316
13.4.10 MTS的运行时代理 316
13.5 外部服务 317
13.5.1 资源管理器 317
13.5.2 资源分配器 317
13.6 安装MTS的系统要求 318
13.7 管理MTS 318
13.7.1 MTS Explorer 318
13.7.2 自动管理的任务 322
13.7.3 命令行工具 322
13.8 小结 323
第14章 MTS作为组件管理器 324
14.1 MTS和其他基于组件服务的编程 325
14.2 MTS的可扩展特性 326
14.3 MTS与标准的COM组件 326
14.3.1 标准COM组件 326
14.3.2 在MTS下运行标准COM组件 330
14.3.3 MTS针对标准COM组件的优点 332
14.4 通向MTS组件之路 332
14.4.1 软件的再使用 333
14.4.2 运行性能,可扩展性与强壮性 334
14.5 状态 335
14.5.1 状态类型 335
14.5.2 状态存储 336
14.6 MTS组件的要求 337
14.7 构造MTS组件 338
14.7.1 上下文对象 338
14.7.2 对象控制 339
14.7.3 用ATL构造MTS组件 340
14.7.4 共享属性管理器(SPM) 342
14.7.5 MTS内引用对象 345
14.7.6 在MTS内创建对象 346
14.8 小结 346
第15章 MTS作为事务协调器 347
15.1 事务处理定义 348
15.1.1 ACID 348
15.2 事务处理管理 349
15.2.1 资源管理员 349
15.2.2 MS DTC 349
15.2.3 资源分配 349
15.2.4 事务处理协议 349
15.3 MTS事务处理编程模型 350
15.3.1 创建事务处理行程 351
15.3.2 完成事务处理 355
15.4 数据访问 358
15.5 监控事务处理 358
15.6 设计需考虑的事项 359
15.6.1 优先选用精细组件 359
15.6.2 将组件靠近它们的数据源 360
15.6.3 同时使用相同资源的信息包组件 360
15.7 小结 360
第16章 MTS安全性 361
16.1 MTS安全概念 362
16.1.1 角色 362
16.1.2 安全责任 364
16.2 说明MTS安全性 364
16.2.1 创建角色 364
16.2.2 向组件和接口中添加角色 365
16.2.3 启动安全性 366
16.2.4 身份验证 366
16.3 程序上的MTS安全性 366
16.3.1 识别用户 367
16.3.2 授权用户 370
16.4 小结 373
第17章 COM的事务处理综合器(COMTI) 374
17.1 COMTI的需求 375
17.2 大型机和Windows DNA 376
17.2.1 SNA Server 377
17.2.2 COMTI之前 378
17.2.3 COMTI 378
17.2.4 COMTI的告诫 379
17.3 CICS和CICS连接 380
17.4 COMTI组件构造器 383
17.4.1 CICS TP 385
17.4.2 CICS LINK 391
17.5 COMTI管理控制面板 391
17.6 COMTI运行时概述 393
17.7 小结 395
第五部分 用报文队列的方法对异步组件进行编程 399
第18章 对松散关联的系统进行编程 399
18.1 什么是报文 400
18.2 报文的优点 400
18.3 报文的缺点 401
18.4 同步编程与异步编程的对比 402
18.5 可扩展性 403
18.6 面向报文的中间设备 404
18.6.1 MOM API 404
18.6.2 MOM系统软件 404
18.6.3 系统管理工具 405
18.7 Microsoft报文队列服务器(MSMQ) 405
18.8 MSMQ连接器 405
18.9 MSMQ与其他API 405
18.10 MSMQ与Email 406
18.11 小结 406
第19章 MSMQ的管理与体系 407
19.1 MSMQ对象与属性 408
19.2 报文 409
19.2.1 报文属性 409
19.3 队列 411
19.3.1 队列类型 411
19.3.2 MQIS 413
19.3.3 LQS 413
19.3.4 队列属性 413
19.3.5 优先权 413
19.3.6 事务性队列 414
19.3.7 识别队列 414
19.3.8 专用队列 416
19.4 计算机 416
19.4.1 计算机属性 416
19.5 MSMQ计划 417
19.5.1 物理连接 417
19.5.2 联网 417
19.5.3 MSMQ控制器 417
19.6 MSMQ客户 417
19.7 MSMQ管理 418
19.8 小结 418
第20章 MSMQ编程 419
20.1 MSMQ库API 420
20.2 用MSMQ库API构建MSMQ应用程序 421
20.2.1 格式名 421
20.2.2 路径名 421
20.2.3 查询格式名 421
20.2.4 用属性工作 422
20.2.5 创建队列 423
20.2.6 注销队列 423
20.2.7 队列打开 424
20.2.8 发送报文 424
20.2.9 接收报文 426
20.2.10 关闭队列 427
20.3 MSMQ ActiveX控件API 434
20.3.1 MSMQ ActiveX类 435
20.4 用原始COM接口构建MSMQ应用程序 436
20.4.1 定义接口与GUID 436
20.4.2 初始化COM 437
20.4.3 创建队列 437
20.4.4 注销队列 439
20.4.5 打开队列 439
20.4.6 送出报文 439
20.4.7 接收报文 440
20.4.8 关闭队列 442
20.5 用灵巧指针构造MSMQ应用程序 450
20.5.1 定义接口与GUID 450
20.5.2 tli文件 453
20.5.3 ATL依赖性 453
20.5.4 创建队列 454
20.5.5 注销队列 454
20.5.6 打开队列 455
20.5.7 送出报文 455
20.5.8 接收报文 456
20.5.9 关闭队列 456
20.6 用VBScript构造一个MSMQ应用程序 461
20.7 小结 464
第21章 高级MSMQ编程 465
21.1 指针 467
21.1.1 MSMQ API指针 467
21.1.2 MSMQ ActiveX组件光标 470
21.2 寻找队列 472
21.2.1 计算机属性 474
21.3 报文确认、应答与日志 475
21.3.1 管理队列 475
21.3.2 应答队列 481
21.3.3 报文ID 482
21.3.4 日志 482
21.4 事务 482
21.4.1 AICD 483
21.4.2 报文事务 483
21.4.3 ITransaction 484
21.4.4 创建事务队列 484
21.4.5 事务的类型 485
21.4.6 外部事务 489
21.5 MSMQ Email API 497
21.6 异步操作 499
21.6.1 自动事件 499
21.6.2 系统事件对象 500
21.6.3 回调函数 504
21.6.4 完成端口 510
21.7 队列安全性 517
21.7.1 报文安全性 517
21.8 小结 518
第六部分 Windows DNA和COM 521
第22章 COM+介绍 521
22.1 COM+的发展过程 522
22.2 MTS的不足 523
22.3 COM+体系结构 523
22.3.1 创建对象 524
22.3.2 参数化对象创建 524
22.3.3 别称 524
22.3.4 中性线程单元 524
22.3.5 对象合并 525
22.3.6 动态合并管理 525
22.3.7 动态负载平衡 525
22.4 COM+部署服务 526
22.5 资源管理器 526
22.5.1 带校正资源管理器(Compensating Resoruce Manager) 526
22.6 小结 527
第23章 COM+服务编程 528
23.1 设计COM+组件 529
23.2 队列中的组件 529
23.2.1 队列中的事务 529
23.2.2 管理队列中的组件 530
23.3 松散关联事件 530
23.3.1 松散关联事件(LCE) 530
23.4 数据访问 531
23.4.1 内存数据库 531
23.4.2 最佳读取数据访问 531
23.4.3 过渡的共享属性管理器 531
23.4.4 IMDB的限制 532
23.4.5 管理IMDB 532
23.5 COM+的安全性 532
23.6 基本COM特性 532
23.6.1 结构化存储 532
23.6.2 取消未完成的COM调用 533
23.7 小结 533