COM:The Component Object Model
组件对象模型 遵循COM的规范标准,组件与应用、组件与组件之间可以互操作,极其方便地建立可伸缩的应用系统。COM是一种技术标准,其商业品牌则称为ActiveX。近几年来,组件在软件开发中得到了广泛的应用,尤其是WindowsDNA将组件应用于Internet,进行各种事务处理,显示出了强大的功能。从组件机制和接口标准方面探讨组件不是一件轻松的事情,我们这里仅从工程应用的范畴讨论组件的开发与使用问题。
第一,组件是与开发工具语言无关的。开发人员可以根据特定情况选择特定语言工具实现组件的开发。对于Internet应用而言,完成事务逻辑处理计算任务的组件以MSVisualBasic进行开发是首选方案。其结果是开发迅速,调试方便,编译之后的组件以二进制的形式发布,可跨Windows平台使用,而且
源程序代码不会外泄,有效地保证了组件开发者的版权。
第二,通过接口有效保证了组件的复用性。一个组件具有若干个接口,每个接口代表组件的某个属性或方法。其他组件或应用程序可以设置或调用这些属性和方法来进行特定的逻辑处理。组件和应用程序的连接是通过其接口实现的。负责集成的开发人员无需了解组件功能是如何实现的,只需简单地创建组件对象并与其接口建立连接。在保证接口一致性的前提之下,可以调换组件、更新版本,也可以把组件安插在不同的应用系统中。
第三,组件运行效率高、便于使用和管理。因为组件是
二进制代码,运行效率比ASP
脚本高很多。核心的商务逻辑计算任务必须由组件来担纲,ASP
脚本只起组装的角色。而且组件在网络上的位置可被透明分配,组件和使用它的程序能在同一进程中、不同进程中或不同机器上运行。组件之间是相互独立的,MTS使对组件的管理更加简便。组件对象通过一个内部引用计数器来管理它自己的生存期,这个计数器存放任何时候连接到该对象的客户数。当
引用计数变为0时,对象可以把自己从内存中释放掉。这使程序员不必考虑与提供可共享资源有关的问题。
对于使用组件的集成开发者而言,一个组件就是一个接口集,只有通过接口才能与组件进行通信;而对于组件来说,接口是包含一个函数
指针数组的内存结构,每个数组元素的内容是一个由组件所实现的函数地址。在一个应用程序中,起决定作用的是组件的接口而不是组件本身。只要组件的接口保持不变,组件可以任意升级或更换,而应用程序不必做任何修改。接口将特定的行为封装起来,一方面使客户可以用同样的方式处理不同组件,一方面同一组件可以在不同的应用中使用。这些特点决定了组件必然有很好的重用性。