《COM+技术大全》PDF下载

  • 购买积分:17 如何计算积分?
  • 作  者:(美)Richard C.Leinecker著;高智勇等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2001
  • ISBN:7111089510
  • 页数:551 页
图书介绍:本书介绍COM+技术的主要特性和编程技巧。主要包括WindoswDNA和COM+的基本概念、高级COM编程技术、组件的管理、事务以及异步组件编程等内容,揭示了COM+的内幕。

前言 1

第一部分 Windows DNA和COM+ 1

第1章 COM+: Windows DNA的粘合剂 1

1.1 Windows DNA 1

1.2 谈谈因特网: HTML和XML 2

1.3 Windows DNA服务 3

1.3.1 Windows DNA服务: COM和COM+ 3

1.3.2 Windows DNA服务: DAN内核 6

1.3.3 Windows DNA服务: 工具 7

1.4 DNA: 功能概述 10

1.4.1 浏览器 10

1.4.2 IIS 10

1.4.3 ASP 11

1.4.4 MTS 12

1.4.5 MSMQ和SQL Server 12

1.4.6 Visual Studio 6.0 12

1.4.8 Visual C++ 14

1.4.7 Visual Basic 14

1.5 小结 15

第2章 多层组件结构 16

2.1 Ad-Hoc设计 16

2.2 基础应用程序边界: 外观、逻辑、数据服务 17

2.3 三层设计 18

2.4 保持层与层之间的均衡 20

2.5 多层设计 20

2.6 本地或分布 22

2.7 几种不错的设计技巧 22

2.7.1 将应用抽象为各层 23

2.7.2 确定组件 23

2.7.3 创建接口 24

2.7.4 实现组件 24

2.7.5 设计约束 24

2.7.6 设计目标 26

2.8 设计工具 28

2.9 小结 29

第二部分 高级COM编程技巧 31

第3章 COM+结构与管理 31

3.1 COM的发展 32

3.2 MTS的缺点 33

3.3 COM+结构 33

3.3.1 创建COM+对象 34

3.3.2 用参数表示的对象结构 34

3.3.3 标记 35

3.3.4 中立线程单元 35

3.3.5 对象池 35

3.3.6 对象池管理 36

3.3.7 动态负荷均衡 36

3.4 COM+配置服务 37

3.5 COM+的资源管理 37

3.7 队列组件 38

3.6 开发COM+应用程序 38

3.7.1 放入队列的事务 39

3.7.2 管理队列组件 39

3.8 松散耦合事件 39

3.9 COM+的数据访问 40

3.9.1 读取最优化的数据访问 40

3.11.1 结构存储 41

3.11 基本的COM特性 41

3.10 COM+的安全性 41

3.9.2 事务中的共享属性管理器 41

3.11.2 取消未完成的COM调用 42

3.12 小结 42

第4章 持久存储 43

4.1 IPersist接口 43

4.1.1 IPersistStorage 44

4.1.2 IPersistFile 45

4.1.3 IPersistStreamInit 45

4.2 IStream接口 46

4.2.1 IStream::Write() 47

4.2.2 IStream::Read() 48

4.2.3 IStream::Seek() 49

4.3 创建实现IPersitStreamInit的ATL对象 50

4.4 使用一个持久对象 54

4.5 简化持久对象的创建 56

4.6 简化持久对象的使用 58

4.7 小结 61

第5章 标记 62

5.1 COM+对象和标记 62

5.2 探究标记类型 66

5.2.1 文件标记 66

5.2.2 运动对象表 69

5.2.3 项目标记 70

5.2.4 组合标记 70

5.2.5 类标记 71

5.3 小结 72

5.2.6 指针标记 72

第6章 可连接的对象 73

6.1 连接点 73

6.2 连接点容器 75

6.3 连接点举例 75

6.4 事件和VB 85

6.4.1 重写事件源 86

6.4.2 ATL代理程序生成器 88

6.4.3 编写VB客户程序 90

6.5 各种工具实现事件时有何不同 91

6.5.1 事件和VB 91

6.5.2 事件和C++Builder 93

6.6 小结 96

第7章 COM+线程 97

7.1 PC线程的发展 97

7.2 COM+线程类型 98

7.2.1 工作者线程 98

7.2.2 消息队列线程 99

7.2.3 窗口线程 100

7.2.4 单元线程 103

7.2.5 线程池 104

7.3 COM+线程模型 105

7.3.1 单线程服务程序 105

7.3.2 单元线程服务程序 106

7.3.3 中立线程服务程序 108

7.3.4 自由线程服务程序 108

7.4 线程同步 111

7.4.1 线程局部存储 111

7.4.2 消除并发问题 111

7.5 小结 117

第8章 COM和注册表 119

8.1 注册表API 119

8.2 Regedit和Regedt32 125

8.3.1 文件扩展名 127

8.3 COM的注册表结构 127

8.3.2 ProgID 128

8.3.3 AppID 130

8.3.4 CLSID 133

8.3.5 接口 135

8.3.6 TypeLibs 136

8.4 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole 137

8.4.3 传统的安全性 138

8.4.2 默认权限 138

8.4.1 允许和禁止DCOM 138

8.5 注册COM+服务程序 139

8.5.1 Regsvr32 139

8.5.2 自注册进程外服务程序 140

8.5.3 框架 141

8.6 小结 141

第9章 COM+的最优化、继承及集合 142

9.1 DCOM的速度 142

9.1.2 网络循环 143

9.1.1 对象定位 143

9.1.3 混合线程模型 144

9.2 远程激活 148

9.3 远程引用计数 149

9.4 代理进程 150

9.5 IClassFactory 153

9.6 继承 155

9.7 小结 160

第10章 使用NT服务 161

10.1 剖析服务 163

10.1.1 main()和WinMain 163

10.1.2 ServiceMain() 164

10.1.3 ServiceCtrlHandle() 167

10.2 ATL和服务 168

10.3 为使用服务而提供的工具 179

10.3.1 Administrative Tools中的Services Applet 179

10.3.2 Diagnostic实用工具 180

10.3.3 Service Controller 181

10.3.4 Event Viewer 181

10.4 OpenSCManager() 181

10.4.1 服务的句柄 182

10.4.2 操作服务 182

10.5 经由注册表安装服务 183

10.6 使用事件日志 184

10.6.1 消息编译器 184

10.6.2 RegisterEventSource(), Deregister EventSource()和ReportEvent() 186

10.6.3 事件日志阅读器 187

10.7 调试你的服务 188

10.7.1 系统账号 188

10.7.2 任务管理器:调试 188

10.7.3 使用AT命令启动调试器 188

10.8 小结 189

11.1 理解调度 190

11.2 类型库调度 190

第11章 调度 190

11.3 标准调度 191

11.3.1 定义DLL入口点 192

11.3.2 类定义 193

11.3.3 定义IID、TypeLib GUID和CLSID 197

11.3.4 代理程序和存根程序的定义 198

11.3.5 注册表文件 203

11.3.6 转换MIDL的输出文件 203

11.4 自定义调度 205

11.4.1 声明对象的类 206

11.4.2 定义对象的类 207

11.4.3 定义代理程序的类 211

11.4.4 客户程序 214

11.5 小结 217

第12章 COM的安全性 218

12.1 COM与DCOM的安全性对比 218

12.2.2 安全性描述符 219

12.2 Windows安全性 219

12.2.1 完善域的安全性 219

12.2.3 验证 230

12.3 模拟 232

12.3.1 伪装 232

12.3.2 CoImpersonateClient()和CoRevertToSelf() 233

12.3.3 伪装 235

12.4 说明性安全性 235

12.5 程序的安全性 235

12.5.1 安全外壳 235

12.5.2 IClientSecurity 236

12.5.3 访问和运行的安全性 237

12.6 小结 238

第13章 配置和错误处理 239

13.1 使用DCOMCNFG配置COM+对象 239

13.1.1 传统COM服务程序 240

13.1.2 创建自动服务程序 242

13.1.3 默认属性 244

13.1.4 默认安全性 245

13.1.5 配置COM+服务程序 249

13.1.6 服务程序的位置 250

13.1.7 服务程序的安全性 250

13.1.8 服务程序的身份 252

13.2 使用OLE2View程序 253

13.2.2 使用OLE2View配置COM+对象 254

13.2.3 指定远程进程内服务程序的代理 254

13.2.1 OLE2View的缺点 254

13.3 错误处理 257

13.3.1 错误处理策略 258

13.3.2 通过ISupportErrorInfo传递信息 259

13.4 小结 264

第14章 COM的互联网服务 265

14.1 一个新的COM+传输协议 265

14.2 隧道TCP协议概述 266

14.2.2 Windows95和Windows98中的客户程序配置 267

14.2.1 配置隧道TCP协议 267

14.2.3 Windows NT4.0 SP4和Windows2000中的客户程序配置 268

14.2.4 客户机代理服务器的配置 268

14.2.5 Windows NT Server4.0上的服务器配置 269

14.2.6 在Windows 2000 Server上配置RPC代理 270

14.3 使能CIS 271

14.4 代理服务器的配置 271

14.4.1 配置微软代理服务器 271

14.4.2 防火墙的配置 272

14.5 配置技巧和已知的问题 272

14.5.1 CIS客户端上不正确的代理服务器设置 272

14.5.2 关于Multihomed CIS服务器的问题 272

14.5.3 MTS对回调的使用 272

14.5.4 有关HTTP高速缓存设备的问题 272

14.5.5 影响CIS的注册表键 273

14.6 OBJREF标记 273

14.7 必要的编程改变 274

14.8 小结 275

第15章 MTS 276

15.1 商业事务 276

15.1.1 协调事务过程 277

15.1.2 事务过程与COM 277

15.3.1 组件的代理进程 278

15.3.2 基于角色的安全性 278

15.3 使用MTS的好处 278

15.2 什么是MTS 278

15.3.3 准时激活 279

15.3.4 MTS资源管理器 279

15.3.5 事务协调 279

15.3.6 MTS与微软互联网信息服务器的集成 279

15.3.7 MTS与微软消息队列服务的集成 279

15.4 MTS的结构 279

15.4.1 程序包 280

15.5 配置MTS 281

15.4.2 活动 281

15.4.3 角色 281

15.6 MTS对象 283

15.6.1 为MTS开发对象 283

15.6.2 向一个程序包中添加对象 286

15.6.3 程序包的属性 287

15.6.4 对象属性 288

15.6.5 配置基于MTS的对象 289

15.6.6 导出程序包 289

15.6.7 导入程序包 289

15.7 高级MTS技巧 290

15.7.1 为程序包和组件提供安全性 290

15.7.2 为程序包创建角色 291

15.7.3 给组件或接口分配角色 291

15.7.4 通过编程影响安全性 291

15.7.5 直接调用者与原始调用者的对比 292

15.8 创建基于MTS的应用程序 293

15.7.6 负载均衡 293

15.8.1 使用MTS进行设计 295

15.8.2 使用MTS扩展应用程序 296

15.8.3 远程管理 296

15.9 小结 296

第三部分 组件管理与事务 299

第16章 作为组件管理器的COM+ 299

16.1 COM+编程及其他基于组件的服务 300

16.2 COM+可扩展性特性 300

16.3 COM+和标准COM组件 301

16.3.1 标准COM组件 301

16.3.2 将标准COM组件用于COM+ 304

16.3.3 COM+对标准COM组件的好处 306

16.4.1 软件复用 307

16.4 通向COM+组件之路 307

16.4.2 性能、可扩展性和稳定性 313

16.5 COM+和状态 314

16.5.1 状态的类型 314

16.5.2 状态存储 315

16.6 COM+组件必备的条件 316

16.7 编写COM+组件 317

16.7.1 环境对象 317

16.7.2 对象控制 318

16.7.3 使用ATL编写COM+组件 319

16.7.4 共享属性管理器 321

16.7.5 在COM+内引用对象 324

16.7.6 COM+内创建对象 324

16.8 小结 325

17.1 对事务的需求 326

第17章 作为事务协调器的COM+ 326

17.1.1 定义的事务 327

17.1.2 ACID 327

17.2 MS DTC 328

17.3 一个简单的事务例子 329

17.4 事务协议 332

17.4.1 OLE事务 332

17.4.2 XA事务 332

17.4.3 CICS和IMS事务 332

17.5 COM+事务编程模型 332

17.5.1 创建事务 333

17.5.2 完成事务处理 337

17.6 旅行社实例 339

17.7 监视事务 344

17.8 设计中的考虑因素 344

17.9 小结 345

17.8.3 在同一应用程序中将使用相同资源的组件放在一起 345

17.8.1 提出细粒度的组件 345

17.8.2 定位靠近其数据源的组件 345

第18章 COM+的安全性 346

18.1 COM+的安全概念 346

18.1.1 角色 347

18.1.2 安全性的职责 348

18.2 安全支持供应商接口 349

18.3 COM+声明安全性 349

18.3.1 创建角色 350

18.3.2 将角色加入到组件和接口中 351

18.3.3 启用安全性 351

18.3.4 验证 352

18.4 过程com+安全性 352

18.4.1 识别用户 352

18.4.2 给用户授权 356

18.5 小结 359

第19章 COM事务集成器 360

19.1 COMTI的要求 360

19.2 大型机和Windows DNA 361

19.2.1 SNA Server 362

19.2.2 在COMTI之前 363

19.2.3 COMTI 363

19.2.4 COMTI警告 364

19.3 CICS和CICS-LINK 365

19.4 COMTI组件创建器 367

19.4.1 组件创建器COBOL向导 368

19.4.2 CICS TP 369

19.4.3 CICS-LINK 375

19.5 COMTI的管理控制台 375

19.6 COMTI运行时间 377

19.7 小结 379

第20章 负载均衡组件 380

20.1 负载均衡组件的定义 380

20.2 负载均衡组件的必要性 381

20.2.1 可扩展性 381

20.2.2 有效性 382

20.2.3 灵活性 382

20.3 并行性和粒度大小 382

20.4 动态负载均衡算法 384

20.5 负载均衡组件设计 385

20.6 负载均衡组件客户机设计 385

20.7 坏消息 385

20.8 不用中央并行处理器的负载均衡组件 386

20.8.1 用SCM工作 386

20.8.2 CoCreateInstance带来的问题 388

20.8.3 创建一个包套 390

20.8.4 算法 391

20.8.5 时间方法 392

20.8.6 时间方法的算法 393

20.8.7 负载均衡的实现 395

20.8.8 其他均衡和分类技术 396

20.8.9 运行时编译执行技术活化 396

20.9 小结 397

第21章 优化Windows DNA应用程序 398

21.1 估计你的需要 398

21.2 最优化技巧 399

21.2.1 使用用户或系统DSN代替文件DNS 399

21.2.2 优化算法,特别是反复循环 399

21.2.3 避免注册表存取访问 400

21.2.4 在任何可能的时候都用运行时编译执行即时激活 401

21.2.6 面向对象的负载均衡组件实用性体系结构 402

21.2.5 修复资源漏失 402

21.2.7 选择工作语言 403

21.2.8 避免中间层状态 403

21.2.9 避免数据访问中间层 403

21.3 使用微软Windows DNA工具包 404

21.4 观察测试的结果 408

21.5 小结 408

第四部分 异步组件程序设计 409

第22章 松散耦合程序设计 409

22.1 什么是消息传递 409

22.2 消息传递的优点 410

22.2.1 用消息传递加强大型应用程序的开发 410

22.2.2 消息传递更好地利用通信资源 410

22.2.3 消息传递在不同系统中取得一致 411

22.3.2 异步执行 412

22.4 同步与异步程序设计 412

22.3.1 延长处理时间 412

22.5 可扩展性 414

22.6 面向消息的中间设备 414

22.6.3 管理工具 415

22.6.2 MOM系统软件 415

22.7 微软消息队列服务器 415

22.6.1 MOM程序接口 415

22.7.3 MSMQ和Email 416

22.7.2 MSMQ和别的API 416

22.8 小结 416

22.7.1 MSMQ连接器 416

第23章 MSMQ管理机构和体系结构 417

23.1 MSMQ对象和属性 417

23.2 消息 419

23.3 队列 420

23.3.1 队列类型 420

23.3.2 消息队列 421

23.3.3 管理队列 421

23.3.4 应答队列 421

23.3.5 日志队列 421

23.3.6 死信队列 421

23.3.7 报告队列 422

23.4 消息队列信息服务 422

23.5 本地队列存储 422

23.6 队列属性 422

23.9 标识队列 423

23.9.1 路径名 423

23.9.2 格式名称 423

23.8 事务队列 423

23.7 优先级 423

23.9.6 私有队列 425

23.9.5 类型 425

23.10 机器 425

23.9.4 标志 425

23.9.3 示例标识符 425

23.11.3 MSMQ控制器 426

23.11.2 连接的网络 426

23.12 MSMQ客户机 426

23.11.1 站点连接 426

23.11 MSMQ企业 426

23.13 MSMQ管理机构 427

23.14 小结 427

第24章 MSMQ程序设计 428

24.1 MSMQ库API 428

24.2 用MSMQ库API创建一个应用程序 429

24.2.1 格式名称 429

24.2.3 查找格式名称 430

24.2.4 用属性工作 430

24.2.2 路径名 430

24.2.5 创建队列 431

24.2.6 解散队列 431

24.2.7 打开队列 432

24.2.8 发送一条消息 432

24.2.9 接收一条消息 434

24.2.10 关闭队列 435

24.3 MSMQ ActiveX控制API 441

22.3 消息传递的弱点 441

24.4 用COM+接口创建MSMQ应用程序 442

24.4.1 定义接口和GUID 442

24.4.2 初始化COM 443

24.4.3 创建队列 443

24.4.4 变体型 444

24.4.5 BSTR 444

24.4.6 解散队列 445

24.4.7 打开队列 445

24.4.8 发送消息 445

24.4.9 接收消息 446

24.4.10 关闭队列 448

24.5.1 定义接口和GUID 454

24.5 用灵巧指针创建一个MSMQ应用程序 454

24.5.2 tli文件 457

24.5.3 ATL从属物 457

25.3.1 行政管理队列 457

24.5.4 创建队列 458

24.5.5 解散队列 458

24.5.6 打开队列 458

24.5.7 发送消息 459

24.5.8 接收消息 459

24.5.9 关闭队列 460

24.6 用VBScript创建一个MSMQ应用程序 463

24.7 小结 466

第25章 高级MSMQ程序设计 467

25.1 游标 468

25.1.1 MSMQ API游标 469

25.1.2 MSMQ ActiveX组件游标 471

25.2 查找队列 473

25.3 消息确认、应答和记录 475

25.3.2 应答队列 480

25.3.3 消息ID 480

25.3.4 记录 481

25.4 事务处理 481

25.4.1 消息事务处理 482

25.4.2 ITransaction 482

25.4.3 创建事务队列 483

25.4.4 事务处理的类型 483

25.4.5 外部事务处理 487

25.5 MSMQ Email API 494

25.6 异步操作 495

25.6.1 自动事件 496

25.6.2 系统事件对象 496

25.6.3 回调函数 500

25.6.4 完成端口 505

25.7 队列安全性 510

25.8 小结 511

第26章 松散耦合事件 512

26.1 一些基本术语 512

26.1.1 设计模式 513

26.1.2 发布人 513

26.1.3 订阅人 513

26.1.4 COM+事件服务 513

26.2 发布-订阅选项的比较 513

26.2.1 轮询 513

26.2.2 紧密耦合事件 514

26.2.3 过紧密耦合 514

26.2.4 要求并行的组件生存期 515

26.2.5 无法过滤噪声 515

26.2.6 松散耦合事件 515

26.3 COM+事件服务 516

26.4 事件服务的演示 518

26.5 高级COM+事件服务问题 523

26.5.1 订单和IEventSubscription接口 523

26.5.2 使用短期订阅单 524

26.5.3 注册短期订阅单 524

26.5.4 取消注册短期订阅单 526

26.6 事件过滤 527

26.6.1 生成过滤器串 527

26.6.2 利用程序生成过滤器串 528

26.7 小结 529

第27章 队列组件 530

27.1 队列组件概述 530

27.2 分布式计算及队列组件 531

27.2.1 确认所接收的数据 532

27.2.2 服务器请求更多的数据 532

27.2.3 确认所执行的操作 532

27.2.5 确定是否排队 533

27.2.4 需要查找数据 533

27.3 队列组件结构 534

27.3.1 生成并定义一个队列组件 534

27.3.2 客户方的队列组件 535

27.3.3 服务器方的队列组件 535

27.4 编写应用队列组件的一个演示程序 536

27.4.1 使用Visual C++和ATL编写一个队列组件 536

27.4.2 安装队列组件 539

27.4.3 定义COM+应用程序 539

27.4.4 标记需排队的COM+应用程序 541

27.4.5 向COM+应用程序中添加组件 542

27.4.6 标记COM接口为排队的 542

27.4.7 用Visual C++编写客户端应用程序 543

27.5 测试组件和客户程序 548

27.6 导出COM+应用程序 549

27.7 小结 550

光盘使用说明 551