早在1997年,MICROSOFT已经宣布了COM+的一些概貌,但是在这近两年的时间里,我们一直都不清楚COM+的真正面貌。随着Windows2000的发布,COM+作为融合在操作系统中的组件技术将会在以后越来越被广泛使用。
COM+并不是COM的简单升级,COM+的底层结构仍然以COM为基础,它几乎包容了COM的所有内容,COM+综合了COM、DCOM和MTS这些技术要素,它把COM组件软件提升到应用层而不再是底层的软件结构,它通过操作系统的各种支持,使组件对象模型建立在应用层上,把所有组件的底层细节留给操作系统,因此,COM+与操作系统的结合更加紧密。
COM+不再局限于COM的组件技术,它更加注重于分布式网络应用的设计和实现。COM+继承了COM几乎全部的优势,同时又避免了COM实现方面的一些不足,把COM、DCOM和MTS的编程模型结合起来,继承了它们的绝大多数特性,在原有的特性上增加了新的功能:
如COM+扩充了MTS安全模型,它允许开发人员或管理员指定到方法级的安全控制,通过COM+对象环境信息,使得COM+的安全模型更为有效细致;
COM+支持MTS的事务语义,不仅可以通过SetAbort或SetComplete完成事务操作,而且COM+还支持BYOT(BringYourOwnTransaction),即允许COM+组件参与非MTS事务处理环境管理的事务;COM+继承了MTS对象池的概念,并且真正实现了对象池的功能。
COM+不仅继承了原有的多数特性,而且还增加了一些服务,比如负载平衡、队列服务、内存数据库、事件服务等。
队列服务对于分布式应用非常有意义,特别是在现在网络速度很慢的情况下,这种机制可以保证应用系统能够可靠地运行。在应用系统包含大量节点但服务器又繁忙的情况下,客户应用程序可以把它们的请求放到队列中,当服务器负载比较轻的时候再处理这些请求;
又如COM+提供了负载平衡服务,它可以实现动态负载平衡,而且COM+应用程序的负载平衡特性并不需要编写代码来支持,客户程序和组件程序都可以按通常的方式实现。获得负载平衡特性并不是用程序设计的方式来实现的,而是通过配置实现分布式应用程序的负载平衡,如上所讲的队列服务,其实也反映了一种负载平衡。
那么,在COM+中怎样来进行管理呢?在COM+中采用了一种称为MMC标准界面环境管理程序。它类似于MTS的管理程序,但并不完全一样,每一个COM+应用可以包括一个或多个COM+组件以及与应用有关的角色信息。通过COM+管理程序,我们可以设置COM+应用和COM+组件的属性信息,比如组件的事务特性、安全特性等等。
COM+把大多数的组件信息保存在COM+目录中。COM+目录把COM和MTS的注册模型统一起来,并提供了一个专门针对组件的管理环境。我们既可以通过COM+管理程序检查或设置COM+目录信息,也可以在程序中通过COM+提供的一组COM接口访问COM+目录信息。
COM+也继承了MTS的安全模型,支持说明性编程模型,也就是说,开发人员可以按尽可能通用的方式开发组件程序,把一些细节留到配置时刻再确定。
利用COM+的服务和管理工具以及其它开发工具,开发一个COM+组件要比开发一个COM组件容易得多,因为COM+组件本身是建立在COM+系统服务基础上的应用程序,而COM+系统服务本身也满足多层应用的一些基本要求,为应用提供了许多新特性,我们可以直接利用这些系统服务,避免了底层的细节处理,减少开发成本,降低代码量,同时也减小了犯错误的可能性;而且我们也可以通过系统服务来访问底层的系统资源,而不用直接跟底层打交道,使得应用程序更加可靠和健壮;通过COM+系统服务,我们在获得可靠性的同时,也可以使我们的组件或者应用程序更趋于标准化。如下图表示了利用COM组件技术和利用COM+编写组件的一些不同之处:
图:利用COM和COM+编写组件的不同之处
---- COM+推出之后,它的开发模式也会有一些转变,尤其对于C++程序员,在编译时刻程序员可以在代码中使用一些说明性的语句来设置COM+组件的属性,比如CLSID、ProgID、线程模型以及双接口等,如果不指定这些属性,编译器将使用缺省值。而以前我们为了使COM组件支持某些非缺省的特性,我们必须通过编写代码来实现这些特性,所以程序员一定要对各种特性了解得非常清楚才能够编写出正确的代码来,这也是实现COM组件的一个难点。
而基于属性的编程模型将直接把COM+组件的属性信息写到C++源代码中,指导编译器产生COM+组件,这样可以使程序员不必编写底层的处理代码,因为这些代码对于几乎所有的组件都差不多,因此让开发工具直接产生这些代码可避免重复劳动,这种方式比MFC的宏以及ATL的模板类来的更为直接。
虽然COM+仍然以COM和MTS为底层基础,但是COM+增加了很多新的技术,我们可以利用这些新的技术更快、更方便地来编写组件或应用程序。与COM相比较,COM+与Windows操作系统结合得更为紧密,集成了很多底层的、繁琐的工作;与MTS相比较,COM+更加适合于分布式应用的开发,它提供了许多大型分布式应用系统才可能用到的一些功能,COM+将使得企业应用直接进入分布式应用领域。
以上代码来自: 源代码数据库(SourceDataBase)
当前版本: 1.0.392
作者: Shawls
个人主页: Http://Shawls.Yeah.Net
E-Mail: ShawFile@163.Net
QQ: 9181729