本书介绍COM+技术的主要特性和编程技巧。主要内容包括Windows DNA和COM+的基本概念、高级COM编程技术、组件的管理、事务以及异步组件编程等。本书揭示了COM+的内幕,实例丰富,分析透彻。拥有本书,可以最大限度地发挥COM+的潜力,获得更好的编程技能。本书适合于所有Windows程序开发人员,尤其对具有编程经验的人更加具有参考价值。随书附带的光盘包含了书中所有实例代码,以及微软最新的极有价值的信息。\r\n
\r\n
第一部分 Windows DNA和COM+\r\n第1章 COM+:Windows DNA的粘合剂 1\r\n1.1 Windows DNA 1\r\n1.2 谈谈因特网:HTML和XML 2\r\n1.3 Windows DNA服务 3\r\n1.3.1 Windows DNA服务:COM和COM+ 3\r\n1.3.2 Windows DNA服务:DNA内核 6\r\n1.3.3 Windows DNA服务:工具 7\r\n1.4 DNA:功能概述 10\r\n1.4.1 浏览器 10\r\n1.4.2 IIS 10\r\n1.4.3 ASP 11\r\n1.4.4 MTS 12\r\n1.4.5 MSMQ和SQL Server 12\r\n1.4.6 Visual Studio 6.0 12\r\n1.4.7 Visual Basic 14\r\n1.4.8 Visual C++ 14\r\n1.5 小结 15\r\n第2章 多层组件结构 16\r\n2.1 Ad-Hoc设计 16\r\n2.2 基础应用程序边界:外观. 逻辑. 数据\r\n服务 17\r\n2.3 三层设计 18\r\n2.4 保持层与层之间的均衡 20\r\n2.5 多层设计 20\r\n2.6 本地或分布 22\r\n2.7 几种不错的设计技巧 22\r\n2.7.1 将应用抽象为各层 23\r\n2.7.2 确定组件 23\r\n2.7.3 创建接口 24\r\n2.7.4 实现组件 24\r\n2.7.5 设计约束 24\r\n2.7.6 设计目标 26\r\n2.8 设计工具 28\r\n2.9 小结 29\r\n第二部分 高级COM编程技巧\r\n第3章 COM+结构与管理 31\r\n3.1 COM的发展 32\r\n3.2 MTS的缺点 33\r\n3.3 COM+结构 33\r\n3.3.1 创建COM+对象 34\r\n3.3.2 用参数表示的对象结构 34\r\n3.3.3 标记 35\r\n3.3.4 中立线程单元 35\r\n3.3.5 对象池 35\r\n3.3.6 对象池管理 36\r\n3.3.7 动态负荷均衡 36\r\n3.4 COM+配置服务 37\r\n3.5 COM+的资源管理 37\r\n3.6 开发COM+应用程序 38\r\n3.7 队列组件 38\r\n3.7.1 放入队列的事务 39\r\n3.7.2 管理队列组件 39\r\n3.8 松散耦合事件 39\r\n3.9 COM+的数据访问 40\r\n3.9.1 读取最优化的数据访问 40\r\n3.9.2 事务中的共享属性管理器 41\r\n3.10 COM+的安全性 41\r\n3.11 基本的COM特性 41\r\n3.11.1 结构存储 41\r\n3.11.2 取消未完成的COM调用 42\r\n3.12 小结 42\r\n第4章 持久存储 43\r\n4.1 IPersist接口 43\r\n4.1.1 IPersistStorage 44\r\n4.1.2 IPersistFile 45\r\n4.1.3 IPersistStreamInit 45\r\n4.2 IStream接口 46\r\n4.2.1 IStream::Write() 47\r\n4.2.2 IStream::Read() 48\r\n4.2.3 IStream::Seek() 49\r\n4.3 创建实现IPersistStreamInit的ATL对象 50\r\n4.4 使用一个持久对象 54\r\n4.5 简化持久对象的创建 56\r\n4.6 简化持久对象的使用 58\r\n4.7 小结 61\r\n第5章 标记 62\r\n5.1 COM+对象和标记 62\r\n5.2 探究标记类型 66\r\n5.2.1 文件标记 66\r\n5.2.2 运行对象表 69\r\n5.2.3 项目标记 70\r\n5.2.4 组合标记 70\r\n5.2.5 类标记 71\r\n5.2.6 指针标记 72\r\n5.3 小结 72\r\n第6章 可连接的对象 73\r\n6.1 连接点 73\r\n6.2 连接点容器 75\r\n6.3 连接点举例 75\r\n6.4 事件和VB 85\r\n6.4.1 重写事件源 86\r\n6.4.2 ATL代理程序生成器 88\r\n6.4.3 编写VB客户程序 90\r\n6.5 各种工具实现事件时有何不同 91\r\n6.5.1 事件和VB 91\r\n6.5.2 事件和C++Builder 93\r\n6.6 小结 96\r\n第7章 COM+线程 97\r\n7.1 PC线程的发展 97\r\n7.2 COM+线程类型 98\r\n7.2.1 工作者线程 98\r\n7.2.2 消息队列线程 99\r\n7.2.3 窗口线程 100\r\n7.2.4 单元线程 103\r\n7.2.5 线程池 104\r\n7.3 COM+线程模型 105\r\n7.3.1 单线程服务程序 105\r\n7.3.2 单元线程服务程序 106\r\n7.3.3 中立线程服务程序 108\r\n7.3.4 自由线程服务程序 108\r\n7.4 线程同步 111\r\n7.4.1 线程局部存储 111\r\n7.4.2 消除并发问题 111\r\n7.5 小结 117\r\n第8章 COM和注册表 119\r\n8.1 注册表API 119\r\n8.2 Regedit和Regedt32 125\r\n8.3 COM的注册表结构 127\r\n8.3.1 文件扩展名 127\r\n8.3.2 ProgID 128\r\n8.3.3 AppID 130\r\n8.3.4 CLSID 133\r\n8.3.5 接口 135\r\n8.3.6 TypeLibs 136\r\n8.4 HKEY_LOCAL_MACHINE\SOFTWARE\\r\nMicrosoft\Ole 137\r\n8.4.1 允许和禁止DCOM 138\r\n8.4.2 默认权限 138\r\n8.4.3 传统的安全性 138\r\n8.5 注册COM+服务程序 139\r\n8.5.1 Regsvr32 139\r\n8.5.2 自注册进程外服务程序 140\r\n8.5.3 框架 141\r\n8.6 小结 141\r\n第9章 COM+的最优化. 继承及集合 142\r\n9.1 DCOM的速度 142\r\n9.1.1 对象定位 143\r\n9.1.2 网络循环 143\r\n9.1.3 混合线程模型 144\r\n9.2 远程激活 148\r\n9.3 远程引用计数 149\r\n9.4 代理进程 150\r\n9.5 IClassFactory 153\r\n9.6 继承 155\r\n9.7 小结 160\r\n第10章 使用NT服务 161\r\n10.1 剖析服务 163\r\n10.1.1 main()和WinMain 163\r\n10.1.2 ServiceMain() 164\r\n10.1.3 ServiceCtrlHandle() 167\r\n10.2 ATL和服务 168\r\n10.3 为使用服务而提供的工具 179\r\n10.3.1 Administrative Tools中的Services \r\nApplet 179\r\n10.3.2 Diagnostic实用工具 180\r\n10.3.3 Service Controller 181\r\n10.3.4 Event Viewer 181\r\n10.4 OpenSCManager() 181\r\n10.4.1 服务的句柄 182\r\n10.4.2 操作服务 182\r\n10.5 经由注册表安装服务 183\r\n10.6 使用事件日志 184\r\n10.6.1 消息编译器 184\r\n10.6.2 RegisterEventSource(), Deregister\r\nEventSource()和ReportEvent() 186\r\n10.6.3 事件日志阅读器 187\r\n10.7 调试你的服务 188\r\n10.7.1 系统账号 188\r\n10.7.2 任务管理器:调试 188\r\n10.7.3 使用AT命令启动调试器 188\r\n10.8 小结 189\r\n第11章 调度 190\r\n11.1 理解调度 190\r\n11.2 类型库调度 190\r\n11.3 标准调度 191\r\n11.3.1 定义DLL入口点 192\r\n11.3.2 类定义 193\r\n11.3.3 定义IID. TypeLib GUID和CLSID 197\r\n11.3.4 代理程序和存根程序的定义 198\r\n11.3.5 注册表文件 203\r\n11.3.6 转换MIDL的输出文件 203\r\n11.4 自定义调度 205\r\n11.4.1 声明对象的类 206\r\n11.4.2 定义对象的类 207\r\n11.4.3 定义代理程序的类 211\r\n11.4.4 客户程序 214\r\n11.5 小结 217\r\n第12章 COM的安全性 218\r\n12.1 COM与DCOM的安全性对比 218\r\n12.2 Windows安全性 219\r\n12.2.1 完善域的安全性 219\r\n12.2.2 安全性描述符 219\r\n12.2.3 验证 230\r\n12.3 模拟 232\r\n12.3.1 伪装 232\r\n12.3.2 CoImpersonateClient()和\r\nCoRevertToSelf() 233\r\n12.3.3 伪装 235\r\n12.4 说明性安全性 235\r\n12.5 程序的安全性 235\r\n12.5.1 安全外壳 235\r\n12.5.2 IClientSecurity 236\r\n12.5.3 访问和运行的安全性 237\r\n12.6 小结 238\r\n第13章 配置和错误处理 239\r\n13.1 使用DCOMCNFG配置COM+对象 239\r\n13.1.1 传统COM服务程序 240\r\n13.1.2 创建自动服务程序 242\r\n13.1.3 默认属性 244\r\n13.1.4 默认安全性 245\r\n13.1.5 配置COM+服务程序 249\r\n13.1.6 服务程序的位置 250\r\n13.1.7 服务程序的安全性 250\r\n13.1.8 服务程序的身份 252\r\n13.2 使用OLE2View程序 253\r\n13.2.1 OLE2View的缺点 254\r\n13.2.2 使用OLE2View配置COM+对象 254\r\n13.2.3 指定远程进程内服务程序的代理 254\r\n13.3 错误处理 257\r\n13.3.1 错误处理策略 258\r\n13.3.2 通过ISupportErrorInfo传递信息 259\r\n13.4 小结 264\r\n第14章 COM的互联网服务 265\r\n14.1 一个新的COM+传输协议 265\r\n14.2 隧道TCP协议概述 266\r\n14.2.1 配置隧道TCP协议 267\r\n14.2.2 Windows 95和Windows 98中的客户\r\n程序配置 267\r\n14.2.3 Windows NT 4.0 SP4和Windows 2000\r\n中的客户程序配置 268\r\n14.2.4 客户机代理服务器的配置 268\r\n14.2.5 Windows NT Server 4.0上的服务器\r\n配置 269\r\n14.2.6 在Windows 2000 Server上配置RPC\r\n代理 270\r\n14.3 使能CIS 271\r\n14.4 代理服务器的配置 271\r\n14.4.1 配置微软代理服务器 271\r\n14.4.2 防火墙的配置 272\r\n14.5 配置技巧和已知的问题 272\r\n14.5.1 CIS客户端上不正确的代理服务器\r\n设置 272\r\n14.5.2 关于Multihomed CIS服务器的\r\n问题 272\r\n14.5.3 MTS对回调的使用 272\r\n14.5.4 有关HTTP高速缓存设备的问题 272\r\n14.5.5 影响CIS的注册表键 273\r\n14.6 OBJREF标记 273\r\n14.7 必要的编程改变 274\r\n14.8 小结 275\r\n第15章 MTS 276\r\n15.1 商业事务 276\r\n15.1.1 协调事务过程 277\r\n15.1.2 事务过程与COM 277\r\n15.2 什么是MTS 278\r\n15.3 使用MTS的好处 278\r\n15.3.1 组件的代理进程 278\r\n15.3.2 基于角色的安全性 278\r\n15.3.3 准时激活 279\r\n15.3.4 MTS资源管理器 279\r\n15.3.5 事务协调 279\r\n15.3.6 MTS与微软互联网信息服务器的\r\n集成 279\r\n15.3.7 MTS与微软消息队列服务的集成 279\r\n15.4 MTS的结构 279\r\n15.4.1 程序包 280\r\n15.4.2 活动 281\r\n15.4.3 角色 281\r\n15.5 配置MTS 281\r\n15.6 MTS对象 283\r\n15.6.1 为MTS开发对象 283\r\n15.6.2 向一个程序包中添加对象 286\r\n15.6.3 程序包的属性 287\r\n15.6.4 对象属性 288\r\n15.6.5 配置基于MTS的对象 289\r\n15.6.6 导出程序包 289\r\n15.6.7 导入程序包 289\r\n15.7 高级MTS技巧 290\r\n15.7.1 为程序包和组件提供安全性 290\r\n15.7.2 为程序包创建角色 291\r\n15.7.3 给组件或接口分配角色 291\r\n15.7.4 通过编程影响安全性 291\r\n15.7.5 直接调用者与原始调用者的对比 292\r\n15.7.6 负载均衡 293\r\n15.8 创建基于MTS的应用程序 293\r\n15.8.1 使用MTS进行设计 295\r\n15.8.2 使用MTS扩展应用程序 296\r\n15.8.3 远程管理 296\r\n15.9 小结 296\r\n第三部分 组件管理与事务\r\n第16章 作为组件管理器的COM+ 299\r\n16.1 COM+编程及其他基于组件的服务 300\r\n16.2 COM+可扩展性特性 300\r\n16.3 COM+和标准COM组件 301\r\n16.3.1 标准COM组件 301\r\n16.3.2 将标准COM组件用于COM+ 304\r\n16.3.3 COM+对标准COM组件的好处 306\r\n16.4 通向COM+组件之路 307\r\n16.4.1 软件复用 307\r\n16.4.2 性能. 可扩展性和稳定性 313\r\n16.5 COM+和状态 314\r\n16.5.1 状态的类型 314\r\n16.5.2 状态存储 315\r\n16.6 COM+组件必备的条件 316\r\n16.7 编写COM+组件 317\r\n16.7.1 环境对象 317\r\n16.7.2 对象控制 318\r\n16.7.3 使用ATL编写COM+组件 319\r\n16.7.4 共享属性管理器 321\r\n16.7.5 在COM+内引用对象 324\r\n16.7.6 在COM+内创建对象 324\r\n16.8 小结 325\r\n第17章 作为事务协调器的COM+ 326\r\n17.1 对事务的需求 326\r\n17.1.1 定义的事务 327\r\n17.1.2 ACID 327\r\n17.2 MS DTC 328\r\n17.3 一个简单的事务例子 329\r\n17.4 事务协议 332\r\n17.4.1 OLE事务 332\r\n17.4.2 XA事务 332\r\n17.4.3 CICS和IMS事务 332\r\n17.5 COM+事务编程模型 332\r\n17.5.1 创建事务 333\r\n17.5.2 完成事务处理 337\r\n17.6 旅行社实例 339\r\n17.7 监视事务 344\r\n17.8 设计中的考虑因素 344\r\n17.8.1 提出细粒度的组件 345\r\n17.8.2 定位靠近其数据源的组件 345\r\n17.8.3 在同一应用程序中将使用相同资源的\r\n组件放在一起 345\r\n17.9 小结 345\r\n第18章 COM+的安全性 346\r\n18.1 COM+的安全概念 346\r\n18.1.1 角色 347\r\n18.1.2 安全性的职责 348\r\n18.2 安全支持供应商接口 349\r\n18.3 COM+声明安全性 349\r\n18.3.1 创建角色 350\r\n18.3.2 将角色加入到组件和接口中 351\r\n18.3.3 启用安全性 351\r\n18.3.4 验证 352\r\n18.4 过程com+安全性 352\r\n18.4.1 识别用户 352\r\n18.4.2 给用户授权 356\r\n18.5 小结 359\r\n第19章 COM事务集成器 360\r\n19.1 COMTI的要求 360\r\n19.2 大型机和Windows DNA 361\r\n19.2.1 SNA Server 362\r\n19.2.2 在COMTI之前 363\r\n19.2.3 COMTI 363\r\n19.2.4 COMTI警告 364\r\n19.3 CICS和CICS-LINK 365\r\n19.4 COMTI组件创建器 367\r\n19.4.1 组件创建器COBOL向导 368\r\n19.4.2 CICS TP 369\r\n19.4.3 CICS-LINK 375\r\n19.5 COMTI的管理控制台 375\r\n19.6 COMTI运行时间 377\r\n19.7 小结 379\r\n第20章 负载均衡组件 380\r\n20.1 负载均衡组件的定义 380\r\n20.2 负载均衡组件的必要性 381\r\n20.2.1 可扩展性 381\r\n20.2.2 有效性 382\r\n20.2.3 灵活性 382\r\n20.3 并行性和粒度大小 382\r\n20.4 动态负载均衡算法 384\r\n20.5 负载均衡组件设计 385\r\n20.6 负载均衡组件客户机设计 385\r\n20.7 坏消息 385\r\n20.8 不用中央并行处理器的负载均衡\r\n组件 386\r\n20.8.1 用SCM工作 386\r\n20.8.2 CoCreateInstance 带来的问题 388\r\n20.8.3 创建一个包套 390\r\n20.8.4 算法 391\r\n20.8.5 时间方法 392\r\n20.8.6 时间方法的算法 393\r\n20.8.7 负载均衡的实现 395\r\n20.8.8 其他均衡和分类技术 396\r\n20.8.9 运行时编译执行技术活化 396\r\n20.9 小结 397\r\n第21章 优化Windows DNA应用程序 398\r\n21.1 估计你的需要 398\r\n21.2 最优化技巧 399\r\n21.2.1 使用用户或系统DSN代替文件\r\nDSN 399\r\n21.2.2 优化算法, 特别是反复循环 399\r\n21.2.3 避免注册表存取访问 400\r\n21.2.4 在任何可能的时候都用运行时编译\r\n执行即时激活 401\r\n21.2.5 修复资源漏失 402\r\n21.2.6 面向对象的负载均衡组件实用性\r\n体系结构 402\r\n21.2.7 选择工作语言 403\r\n21.2.8 避免中间层状态 403\r\n21.2.9 避免数据访问中间层 403\r\n21.3 使用微软Windows DNA工具包 404\r\n21.4 观察测试的结果 408\r\n21.5 小结 408\r\n第四部分 异步组件程序设计\r\n第22章 松散耦合程序设计 409\r\n22.1 什么是消息传递 409\r\n22.2 消息传递的优点 410\r\n22.2.1 用消息传递加强大型应用程序的\r\n开发 410\r\n22.2.2 消息传递更好地利用通信资源 410\r\n22.2.3 消息传递在不同系统中取得一致 411\r\n22.3 消息传递的弱点 411\r\n22.3.1 延长处理时间 412\r\n22.3.2 异步执行 412\r\n22.4 同步与异步程序设计 412\r\n22.5 可扩展性 414\r\n22.6 面向消息的中间设备 414\r\n22.6.1 MOM程序接口 415\r\n22.6.2 MOM系统软件 415\r\n22.6.3 管理工具 415\r\n22.7 微软消息队列服务器 415\r\n22.7.1 MSMQ连接器 416\r\n22.7.2 MSMQ和别的API 416\r\n22.7.3 MSMQ和Email 416\r\n22.8 小结 416\r\n第23章 MSMQ管理机构和体系结构 417\r\n23.1 MSMQ对象和属性 417\r\n23.2 消息 419\r\n23.3 队列 420\r\n23.3.1 队列类型 420\r\n23.3.2 消息队列 421\r\n23.3.3 管理队列 421\r\n23.3.4 应答队列 421\r\n23.3.5 日志队列 421\r\n23.3.6 死信队列 421\r\n23.3.7 报告队列 422\r\n23.4 消息队列信息服务 422\r\n23.5 本地队列存储 422\r\n23.6 队列属性 422\r\n23.7 优先级 423\r\n23.8 事务队列 423\r\n23.9 标识队列 423\r\n23.9.1 路径名 423\r\n23.9.2 格式名称 423\r\n23.9.3 示例标识符 425\r\n23.9.4 标志 425\r\n23.9.5 类型 425\r\n23.9.6 私有队列 425\r\n23.10 机器 425\r\n23.11 MSMQ企业 426\r\n23.11.1 站点连接 426\r\n23.11.2 连接的网络 426\r\n23.11.3 MSMQ控制器 426\r\n23.12 MSMQ客户机 426\r\n23.13 MSMQ管理机构 427\r\n23.14 小结 427\r\n第24章 MSMQ程序设计 428\r\n24.1 MSMQ库API 428\r\n24.2 用MSMQ库API创建一个应用程序 429\r\n24.2.1 格式名称 429\r\n24.2.2 路径名 430\r\n24.2.3 查找格式名称 430\r\n24.2.4 用属性工作 430\r\n24.2.5 创建队列 431\r\n24.2.6 解散队列 431\r\n24.2.7 打开队列 432\r\n24.2.8 发送一条消息 432\r\n24.2.9 接收一条消息 434\r\n24.2.10 关闭队列 435\r\n24.3 MSMQ ActiveX控制API 441\r\n24.4 用COM+接口创建MSMQ应用程序 442\r\n24.4.1 定义接口和GUID 442\r\n24.4.2 初始化COM 443\r\n24.4.3 创建队列 443\r\n24.4.4 变体型 444\r\n24.4.5 BSTR 444\r\n24.4.6 解散队列 445\r\n24.4.7 打开队列 445\r\n24.4.8 发送消息 445\r\n24.4.9 接收消息 446\r\n24.4.10 关闭队列 448\r\n24.5 用灵巧指针创建一个MSMQ应用程序 454\r\n24.5.1 定义接口和GUID 454\r\n24.5.2 .tli文件 457\r\n24.5.3 ATL从属物 457\r\n24.5.4 创建队列 458\r\n24.5.5 解散队列 458\r\n24.5.6 打开队列 458\r\n24.5.7 发送消息 459\r\n24.5.8 接收消息 459\r\n24.5.9 关闭队列 460\r\n24.6 用VBScript创建一个MSMQ应用程序 463\r\n24.7 小结 466\r\n第25章 高级MSMQ程序设计 467\r\n25.1 游标 468\r\n25.1.1 MSMQ API 游标 469\r\n25.1.2 MSMQ ActiveX组件游标 471\r\n25.2 查找队列 473\r\n25.3 消息确认. 应答和记录 475\r\n25.3.1 行政管理队列 475\r\n25.3.2 应答队列 480\r\n25.3.3 消息ID 480\r\n25.3.4 记录 481\r\n25.4 事务处理 481\r\n25.4.1 消息事务处理 482\r\n25.4.2 ITransaction 482\r\n25.4.3 创建事务队列 483\r\n25.4.4 事务处理的类型 483\r\n25.4.5 外部事务处理 487\r\n25.5 MSMQ Email API 494\r\n25.6 异步操作 495\r\n25.6.1 自动事件 496\r\n25.6.2 系统事件对象 496\r\n25.6.3 回调函数 500\r\n25.6.4 完成端口 505\r\n25.7 队列安全性 510\r\n25.8 小结 511\r\n第26章 松散耦合事件 512\r\n26.1 一些基本术语 512\r\n26.1.1 设计模式 513\r\n26.1.2 发布人 513\r\n26.1.3 订阅人 513\r\n26.1.4 COM+事件服务 513\r\n26.2 发布-订阅选项的比较 513\r\n26.2.1 轮询 513\r\n26.2.2 紧密耦合事件 514\r\n26.2.3 过紧密耦合 514\r\n26.2.4 要求并行的组件生存期 515\r\n26.2.5 无法过滤噪声 515\r\n26.2.6 松散耦合事件 515\r\n26.3 COM+事件服务 516\r\n26.4 事件服务的演示 518\r\n26.5 高级COM+事件服务问题 523\r\n26.5.1 订单和IEventSubscription接口 523\r\n26.5.2 使用短期订阅单 524\r\n26.5.3 注册短期订阅单 524\r\n26.5.4 取消注册短期订阅单 526\r\n26.6 事件过滤 527\r\n26.6.1 生成过滤器串 527\r\n26.6.2 利用程序生成过滤器串 528\r\n26.7 小结 529\r\n第27章 队列组件 530\r\n27.1 队列组件概述 530\r\n27.2 分布式计算及队列组件 531\r\n27.2.1 确认所接收的数据 532\r\n27.2.2 服务器请求更多的数据 532\r\n27.2.3 确认所执行的操作 532\r\n27.2.4 需要查找数据 533\r\n27.2.5 确定是否排队 533\r\n27.3 队列组件结构 534\r\n27.3.1 生成并定义一个队列组件 534\r\n27.3.2 客户方的队列组件 535\r\n27.3.3 服务器方的队列组件 535\r\n27.4 编写应用队列组件的一个演示程序 536\r\n27.4.1 使用Visual C++和ATL编写一个队列\r\n组件 536\r\n27.4.2 安装队列组件 539\r\n27.4.3 定义COM+应用程序 539\r\n27.4.4 标记需排队的COM+应用程序 541\r\n27.4.5 向COM+应用程序中添加组件 542\r\n27.4.6 标记COM接口为排队的 542\r\n27.4.7 用Visual C++编写客户端应用程序 543\r\n27.5 测试组件和客户程序 548\r\n27.6 导出COM+应用程序 549\r\n27.7 小结 550\r\n光盘使用说明 551 \r\n
\r\n
本书的基本内容包括:
1) 讲述COM+在实际应用和高级解决方案中的强大能力.
2) 提供读者可能永远也想不到的, 但是用COM+却可以轻松解决的捷径.
3) 揭开Windows DNA的神秘面纱, 讲述其强大的服务器方产品, 例如COM+目录的主框架.
4) 指出在实际的COM+/DNA工程中存在的缺陷和细微的差别.
本书面向的对象
本书决不是COM+的参考书或者其理论的概述. 它面向于希望进一步深化的中高级COM+程序员. 我们假定读者具有C++的使用经验, 并且熟悉Windows环境.
本书所包含的内容
COM+是一个很大的话题, 完整地讲述它需要好几本书. 本书将重点放在使用Microsoft DNA技术编写高级COM+程序上. 由于COM+的重要性和趋同性, 我们花了很多的篇幅讨论类似于MTS和MSMQ的服务器方DNA产品. 尽管DNA的焦点集中于发布的n层互联网程序上, 但是我们讨论的编程技术却应用于COM+的编程和普通的互操作上. 由于太复杂或者没有详尽的说明文档, COM+许多强大的特性往往被初级程序员所忽视. 本书以尽量简单的捷径讲解更多深奥而又强大的. 多方面的COM+知识. 尽管仅从表面上理解还不够, 但是一些特性, 例如标记. 自定义调度和永久存储, 对于准备开发可升级的. 可靠而又有效的应用程序的COM+开发者来说却是必须的. 尽管我无法从理论的角度完全覆盖COM+的所有内容, 但是我也没有完全分割各个主题之间的关系. 在COM+中有一些诱人的算法和协议, 我将在整本书贯穿讲述, 以帮助读者理解COM+技术的优点和缺陷.
本书不包含的内容
本书假定你对COM+已经有所理解并且能用它进行一些基本的工作. 我们将不解释最基本的组成构件. 例如, 你应该熟悉Iunknown接口并且明白它在COM+中所起的作用. 本书不比较COM+与其他组件技术的异同, 例如CORBA.
IIS是DNA中的一部分, 本书不讨论它是因为它处于Web技术的边缘, 而COM+通常可以通过脚本和其他高级语言编程. 如果你想学习Web应用程序, 可以查看本书第1和第2章中提到的参考书目.
与作者联系
我将大部分个人时间花费在开发Web站点和新闻组上以及编写本书的主要动机之一, 是以帮助我的同事开发程序为乐趣. 非常感谢你购买了本书, 当你对本书有什么疑问或者在开发DNA/Web的过程中遇到什么困难的话, 不要犹豫, 赶快与我联系. 我的Web站点是www.source DNA.com.
下载例子
本书中的所有例子都包含在附带的光盘中, 安装该光盘后将可以很容易地找到需要的东西.
由于某些原因, 尽管许多开发者能够使其上司知道在程序中存在bug是一件很普遍的事情, 但是在本书所包含的软件中存在错误却总是会令这些程序员恼火. 编辑花了很多时间来测试本书中的例子, 但是很遗憾, 像其他任何软件一样, 在我们的代码中肯定也会有错误. 我将及时在我的ftp站点ftp://mcp.com/product_support或http://www.sourceDNA.com修改代码, 以提供最新的版本.
软件要求
下面的几个部分讨论了COM+技术内幕的软件需求. 本书用到了几个不同的技术和编程工具.
COM
COM并没有指定任何开发语言或工具, 它只需要可用的语言或工具以能够产生二进制编码的可注册的组件. 尽管可以使用一些非常低级的语言来生成COM组件, 例如用汇编语言, 但是这往往需要付出特别多的劳动和努力才能在开发组中实现. 微软开发了许多工具以尽可能地帮助程序员在程序设计和逻辑推理方面避免麻烦.
在本书中, 我使用了微软开发的能够尽快帮助你完成工作并且尽量避免bug的软件. 特别地, 本书中的代码使用了Visual C++ 6.0和Service Pack 3及Active Template Library来编写, 其中一些例子使用了Visual Basic 6.0和VB脚本来实现, 以示范COM的多种解决方案. COM库使用了标准Windows NT. 95/98和2000的库.
COM+
尽管Windows NT. 95/98支持COM, 但是只有Windows 2000支持COM+. 为了开发. 测试和使用本书中的例子, 你的计算机上应该装有Windows 2000.
MTS/MSMQ
MTS和MSMQ可以从微软的站点上免费得到, 它们是Option Pack 4.0的一部分. MSMQ至少需要NT Server 4.0以作为基础企业控制器, MTS则可以运行在Windows NT. 95/98上.
本书的结构
本书包含四部分, 后一部分建立在前一部分的基础之上. 我尽量使每一部分包含自己的风格, 但是这不会影响你的阅读. 这四部分是:
Windows DNA 和COM+
本部分讲述了组件对象模型以及它与微软DNA结构的关系. 主要的服务器方产品和开发工具包含在DNA环境中. 在本部分你还可以学习多层建筑的声音设计概念(基于组件的编程思想).
高级COM+编程技巧
假定读者已经是中高级的COM+程序员, 在本部分中讲述了功能更加强大的. 但是有时隐含的COM/COM+特性. 比如组件的连续性. 事件. 标记. 线程和其他高级问题.
组件管理和事务
本部分讨论了Microsoft事务服务和COM+服务. 这些丰富的资源和组件管理服务比单纯的事务要有用多.
异步组件编程
在当今移动和非连接的计算机世界, MSMQ和COM+队列组件为之提供了异步通信. 这些技术为从应用到应用的通信提供了可容错和可升级的解决方案.
本书由高智勇. 赵. 唐华平. 黄蔚玲. 王绣勤等翻译, 高智勇作了最后的审稿, 参加本书翻译工作的还有白桐. 谭心. 李明. 郭东. 刘波. 刘彩伟. 邓建国. 徐丽. 唐林平等. 另外, 姜春林. 周余平对本书的翻译提出了不少好的建议.