标题：COM+
简介
COM是个开放的组件标准，它有很强的扩充和扩展能力，从COM到DCOM，再到MTS的发展过程也充分说明了这一点。对COM有使用经验的读者一定可以感觉到，虽然COM已经改变了Windows程序员的应用开发模式，把组件的概念融入到Windows应用中，但是由于种种原因，DCOM和MTS的许多优越性还没有为广大的Windows程序员所认识。MTS针对企业应用和Web应用的特点，在COM  三层结构技术组成模型/DCOM的基础上又添加了许多功能和特性，包括事务特性、安全模型、管理和配置等，MTS使COM成为一个完整的组件体系结构。由于历史的原因，COM、DCOM和MTS相互之间并不很融洽，难以形成统一的整体，不过，这种状况很快就要结束，因为COM+将把这三者有效地统一起来，形成一个全新的、功能强大的组件体系结构，并且把DCOM和MTS的各种优势以更为简捷的方式带给Windows2000程序员和用户。
COM+不再局限于COM的组件技术，它更加注重于分布式网络应用的设计和实现，已经成为Microsoft系统平台策略和软件发展策略的一部分。COM+继承了COM几乎全部的优势，同时又避免了COM实现方面的一些不足。COM+紧紧地与操作系统结合起来，通过系统服务为应用程序提供全面的服务，这一部分介绍COM+的基本结构。[1]
特性
与COM一样，COM+基于二进制组件和基于接口的编程。通过使用透明RPC层，可以跨越进程和计算机边界进行远程方法调用。正如COM组件那样，COM+组件可以在成品中升级和扩展，而不会对使用它们的客户端应用程序造成负面影响。
  COM+组成结构图与MTS一样，COM+支持分布式事务和基于角色的安全性。它提供内置线程池方案，该方案与MTS的线程池方案一样透明。COM+编程模型同样利用侦听通过声明性属性向开发人员公开平台服务。但是，COM+比MTS更进一步地利用了基于属性的编程。除了事务性服务和集成安全性外，COM+还公开自定义对象构造、同步、对象池等服务。COM+的其他新功能（如排队组件和COM+事件）也通过可配置的属性公开。
类型
进程内组件：组件是在主调应用程序的进程范围内运行，是以DLL方式实现的。组件的实现是快速的，但由于和应用程序公用一个进程，导致了不安全的因素。
进程外组件：它又可分为两类。本地服务器进程组件，它是组件与调用组件者在同一机器上；远程服务器进程组件，它是组件使用远程过程调用RPCs和客户应用程序进行通信。
应用
对Windows进行的任何技术讨论，必然要包括对组件对象模型COM的讨论。COM是一种对象技术，已成  跨环境调用示意图为Windows的全部（技术）的基础，并且还是Microsoft向Internet进军的一部分。COM不仅与用户相互作用，而且还是创建类似于应用程序中使用的按钮之类的组件的技术基础。换言之，不以某种方式讨论一下COM，就不能开始对Internet的Windows或Microsoft版本进行讨论。
就在一年前，ActiveX还是表达Microsoft进军Internet的新版COM的中心词汇。但是，现在已经证明，ActiveX太庞大（尽管ActiveX控件远远小于被它取代的OCX），太依赖于浏览器，而且对大多数人来说又有太多的安全风险。另外，Microsoft市场部正在用ActiveX来描述Microsoft正在发布的几乎每一项新技术，这样只能使客户更加迷惑。
当COM+及分布式网际网应用程序（DistributedinterNetApplication，DNA）出现在Internet时，就又有了两个新鲜而又激动人心的术语让你学习了。ActiveX不再是描述Microsoft的COM技术诸个方面的术语，它仅关系到在应用程序或内部网站点中创建并使用的组件。如果你正在谈论使能技术或DNA技术，如果你正在谈论COM+技术的进展情况，那么在Internet上干任何事现在都称为COM+。
WEB链接可以在上得到Microsoft种种最新的COM技术。这个站点可使你一直跟得上Microsoft正在引入的各种与COM相关的技术发展，以及预期它们是如何发展的。
事实上，作为C++程序员，需要了解相当多的基于COM的技术。下列章节将快速地浏览一下这些技术，并讨论如何将它们放入一般方案中。显然，在Microsoft升级其COM技术时，这种讨论也会有所变化。
分布式COM（DCOM）──网络接口COM的这一版允许组件和应用程序在网络上进行通信。DCOM设计得可以在相当多的网络协议──包括Internet使用的TCP/IP──上进行通信。DCOM为开发人员所能做到的，是允许客户的应用程序只要使用标准的COM接口，就可和运行于服务器上的服务直接通信。实际上，这就意味着你可以设计一个控件或一小段程序，使得客户机的应用程序从服务器接收数据，然后在本地对这些数据进行计算。另外，DCOM使得我们可以在客户机和服务器间进行安全通信，而不需关心所用的协议。
COM+──功能标准COM接口扩充。它是现有的COM标准的扩充，使开发人员能利用特殊的COM+调用来设计高级的控件。COM+提供的最重要的COM扩充是数据捆绑，允许组件提供数据库访问。添加数据库访问，意味着可以使用COM+为能访问远程数据的Internet建立组件。COM+还是分布式网际网（DNA）体系结构的基础，而DNA是Microsoft的最新的Internet版本。
理论上，DNA允许COM组件可以在任意平台上执行，并且允许开发人员可以使用任意语言写出该组件  队列组件模型结构图。可以使用任意语言和任意平台进行工作的这部分能力，来源于一个称之为侦听器的COM+新特色。使用侦听器允许COM+组件可以在运行期间调用多种服务，而不是依赖于某一具体服务。你将使用侦听器接收和处理与实例创建、调用与返回、出错以及实例删除有关的事件。侦听器还提供了处理事务及系统监督的机制。
Microsoft事务服务器（MTS）──功能COM服务器。信不信由你，MTS是COM的一部分，它允许开发人员创建“轻型(lite)”控件，这种控件集中于处理组件背后的事务逻辑，而不是处理组件所需要的全部接口。建立轻型控件意味着能够更快地创建它们，使用时下载时间更少。MTS将成为IIS4.x的一部分。
ActiveX──功能组件建立。ActiveX最初是作为Internet的一项新技术而引入的，它是一种组件建立技术，它是Microsoft组件技术的第三个版本。将ActiveX从以前的OLE控件扩充（OCX）中分离出来的原因之一是，可以在类似于Internet的高级潜在网络中使用它们。它们还设计得可以与浏览器一起工作，尽管在写出本书时真正使用它们的唯一浏览器只有InternelExplorer。ActiveX控件的特色还包括增量绘制和代码签名，使得用户可以在控件执行前识别出它们的作者。
优点
COM+不仅继承了COM所有的优点，而且还增加了一些服务，比如队列服务、负载平衡、内存数据库、事件服务等。  COM+事件模型结构图队列服务对于分布式应用非常有意义，特别是在现在网络速度很慢的情况下，这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下，客户应用程序可以把它们的请求放到队列中，当服务器负载比较轻的时候再处理这些请求；[1]
又如COM+提供了负载平衡服务，它可以实现动态负载平衡，而且COM+应用程序的负载平衡特性并不需要编写代码来支持，客户程序和组件程序都可以按通常的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的，而是通过配置实现分布式应用程序的负载平衡，如上所讲的队列服务，其实也反映了一种负载平衡。
(1)真正的异步通讯。COM+底层提供了队列组件服务，这使客户和组件有可能在不同的时间点上协同工作，COM+应用无须增加代码就可以获得这样的特性。
(2)事件服务。新的事件机制使事件源和事件接收方实现事件功能更加灵活，利用系统服务简化了事件模型，避免了COM可连接对象机制的琐碎细节。
(3)可伸缩性。COM+的可伸缩性来源于多个方面，动态负载平衡以及内存数据库、对象池等系统服务都为COM+的可伸缩性提供了技术基础，COM+的可伸缩性原理上与多层结构的可伸缩特性一致。
(4)可管理和可配置性。管理和配置是应用系统开发完成后的行为，在软件维护成本不断增加的今天，COM+应用将有助于软件厂商和用户减少这方面的投入。
  COM+组件编译过程示意图(5)易于开发。COM+应用开发的复杂性和难易程度将决定COM+的成功与否，虽然COM+开发模型比以前的COM组件开发更为简化，但真正提高开发效率仍需要借助于一些优秀的开发工具。
COM+标志着Microsoft的组件技术达到了一个新的高度，它不再局限于一台机器上的桌面系统，它把目标指向了更为广阔的企业内部网，甚至Internet国际互连网络。COM+与多层结构模型以及Windows操作系统为企业应用或Web应用提供了一套完整的解决方案。[1]