描述:
使用 COM(Component Object Model)组件规范来构建软件是很有益处的。按照功能或其他标准将软件分为不同的组成部分,每个子部分通过 COM 组件来构建。当需要替换或升级软件时,不必让用户停下来等待,也不需要强制程序员加班改写全部程序,因为也不必一次替换掉整个软件。对于一个由多个 COM 组件构造的软件,它可以在软件运行的时候被卸下并替换某一部分。不需要重新编译、链接程序。像换积木块一样。使用 COM 组件的优点直接来源于可以动态地将它插入或卸出应用。它的这些优点在于两个方面:动态链接,约定的接口。
COM 利用 DLL 来给组件提供动态链接的能力。动态链接达成了 COM 组件的最终目标和最大威力:在软件运行过程中,动态地替换或卸载构成软件的子模块。如果不能这样,改变软件的途径就是重新编译、链接,并替换整个软件。在某些情况下,重新编译、链接对于最终用户来说几乎是不可能的。DLL 是 COM 的发布方式,但 DLL 不是 COM 的全部。组件是在 DLL 中实现的接口集。DLL 只是形式,COM 才是实质。
接口不是一个神秘的词语。它在 COM 和接口这些词语被抱怨太复杂(甚至有人用接口名IUNKNOWN做为车牌并有一个绰号叫COM神)之前就已被很好的理解。COM 中的接口也涉及到函数--这个并不陌生。COM、接口同样会很快变得如此那般的通常。其实,事实亦是如此。COM 组件实现了某些预定的逻辑功能,它通过接口向外部提供对这些功能的调用。多个相关的 COM 组件之间存在这样的互相调用关系,并因此形成了一个功能更丰富的软件。关键的地方就在于构成软件的多个组件之间的互相调用。当其中的某个组件被替换掉,即使不能对软件的功能有所增强,软件的原有功能至少应该得到保证。即新添加进来的组件应能够被调用,并需要像原来那样调用其它的组件。相互之间的调用、被调用都应得到保证。接口就是相互之间的关系、约定。在 COM 中需要保证原有的接口、及调用关系。在现实生活中,要信守约定的承诺。
这就是 COM。接下来需要逐步进入 COM 的内部,了解存在一件伟大的事物后面,那些支撑着它的琐碎的细节。
解决方案1:
dll是com的形式,好!可是怎么来用com呀,我不会
解决方案2: ????
兄弟到底要干什么?
COM无非是一种规范而已,没什么神秘。它要实现对客户透明,不让客户了解细节,只给客户一组接口。它是二进制级的。假如C++的类就不能让VB来用了,但是做成COM的话就可以调用了,呵呵。
COM中有很多技术可以学的,比如SmartPointer,类厂,引用计数等等。
现在给COM下个定义:当COM不是COM的时候,COM才是COM!(谢谢,大家不要打我脸)
····