就像硬件工程师们先设计和制造出可用于各种电子设备的元件,然后利用它们组装成设备一样,控制系统软件开发者可以利用软件组件去组装自己的程序块,且很放心地知道这些组件是无故障的。这些组件不使用全局变量,并且独立于任何应用程序。组件对象模型(Component Object Model---COM)就是软件组件采用的一种常规结构。它根据面向对象编程(Object Oriented Programming---OOP)的思想,将组件对象化,给出了面向对象软件组件(或简称为对象组件)的标准。 COM首次是在对象链接与嵌入(Object Linking and Embedding---OLE)2.0版中引入的,它是一种标准,而非一种实现。COM解释了组件之间该如何通信,但为了具体实现它,还需要用到另一个东西,即ActiveX。 在设计COM的过程中,微软解决了下列问题: (1)交互操作能力。开发者怎样才能创建出独立的组件,使其能与其它组件充分地协作,而不用考虑它们是由谁创建的? (2)版本控制。一旦某个组件正由其他组件或应用程序使用,怎样才能改变或升级这个组件,而不影响正在使用它的组件或应用程序? (3)与语言无关。怎样才能确保用不同语言编写的组件能协同工作? (4)透明的跨进程交互操作。开发者怎样才能编写组件,使其能在进程内或进程外工作? 然而,OLE2中的COM只解决了同一网络中对象之间的交互问题,而没有解决对象在不同网络中的其它机器上生存或执行的问题,对这一问题的解决将打开通向在Windows环境下的分布对象结构之路。为了适应这一需要,微软开发出了分布式组件对象模型