COM+并不是COM的新版本,我们可以把它理解为COM的新发展,或者为COM更高层次上的应用。COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容。有一种说法这样认为,COM+是COM、DCOM和MTS(Microsoft Transaction Server)的集成,这种说法有一定的道理,因为COM+确实综合了这些技术要素。但更重要的一点是,COM+倡导了一种新的概念,它把COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统。
COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现,已经成为Microsoft系统平台策略和软件发展策略的一部分。COM+继承了COM几乎全部的优势,同时又避免了COM实现方面的一些不足。COM+紧紧地与操作系统结合起来,通过系统服务为应用程序提供全面的服务,这一部分介绍COM+的基本结构。
与MTS一样,COM+支持分布式事务和基于角色的安全性。它提供内置线程池方案,该方案与MTS的线程池方案一样透明。COM+编程模型同样利用侦听通过声明性属性向开发人员公开平台服务。但是,COM+比MTS更进一步地利用了基于属性的编程。除了事务性服务和集成安全性外,COM+还公开自定义对象构造、同步、对象池等服务。COM+的其他新功能(如排队组件和COM+事件)也通过可配置的属性公开。
进程内组件:组件是在主调应用程序的进程范围内运行,是以DLL方式实现的。组件的实现是快速的,但由于和应用程序公用一个进程,导致了不安全的因素。
进程外组件:它又可分为两类。本地服务器进程组件,它是组件与调用组件者在同一机器上;远程服务器进程组件,它是组件使用远程过程调用RPCs和客户应用程序进行通信。
就在一年前,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版本。
Microsoft事务服务器(MTS)──功能COM服务器。信不信由你,MTS是COM的一部分,它允许开发人员创建“轻型(lite)”控件,这种控件集中于处理组件背后的事务逻辑,而不是处理组件所需要的全部接口。建立轻型控件意味着能够更快地创建它们,使用时下载时间更少。MTS将成为IIS4.x的一部分。
ActiveX──功能组件建立。ActiveX最初是作为Internet的一项新技术而引入的,它是一种组件建立技术,它是Microsoft组件技术的第三个版本。将ActiveX从以前的OLE控件扩充(OCX)中分离出来的原因之一是,可以在类似于Internet的高级潜在网络中使用它们。它们还设计得可以与浏览器一起工作,尽管在写出本书时真正使用它们的唯一浏览器只有InternelExplorer。ActiveX控件的特色还包括增量绘制和代码签名,使得用户可以在控件执行前识别出它们的作者。
COM+不仅继承了COM所有的优点,而且还增加了一些服务,比如队列服务、负载平衡、内存数据库、事件服务等。队列服务对于分布式应用非常有意义,特别是在现在网络速度很慢的情况下,这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下,客户应用程序可以把它们的请求放到队列中,当服务器负载比较轻的时候再处理这些请求;
又如COM+提供了负载平衡服务,它可以实现动态负载平衡,而且COM+应用程序的负载平衡特性并不需要编写代码来支持,客户程序和组件程序都可以按通常的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的,而是通过配置实现分布式应用程序的负载平衡,如上所讲的队列服务,其实也反映了一种负载平衡。
(1)真正的异步通讯。COM+底层提供了队列组件服务,这使客户和组件有可能在不同的时间点上协同工作,COM+应用无须增加代码就可以获得这样的特性。
(2)事件服务。新的事件机制使事件源和事件接收方实现事件功能更加灵活,利用系统服务简化了事件模型,避免了COM可连接对象机制的琐碎细节。
(3)可伸缩性。COM+的可伸缩性来源于多个方面,动态负载平衡以及内存数据库、对象池等系统服务都为COM+的可伸缩性提供了技术基础,COM+的可伸缩性原理上与多层结构的可伸缩特性一致。
(4)可管理和可配置性。管理和配置是应用系统开发完成后的行为,在软件维护成本不断增加的今天,COM+应用将有助于软件厂商和用户减少这方面的投入。
COM+标志着Microsoft的组件技术达到了一个新的高度,它不再局限于一台机器上的桌面系统,它把目标指向了更为广阔的企业内部网,甚至Internet国际互连网络。COM+与多层结构模型以及Windows操作系统为企业应用或Web应用提供了一套完整的解决方案。
联系客服