由于COM组件和.net组件依赖于不同的内部结构,因此他们天生就是不兼容的。但幸运的是Microsoft公司在.net SDK中提供了一些工具,使用这些工具可以为.net组件生成COM代理,也可以为COM组件生成.net代理,使用这些代理和其他的技术,各个公司就可以在.net工程中使用就的COM组件,并且也可以在非.net应用程序中使用.net组件。
静态链接
代码的重用在程序开发的早期,开发人员想要在他的一个程序中使用实用函数时,就要使用#include语句把库文件和主程序文件连接在一起。在编译之后,实用函数和调用实用函数的程序就静态的链接在一起,从而形成一个可执行的文件!
静态链接的两个缺陷:
1、由于它把同一函数发那个在多个可执行文件中,因此就大大浪费了存储空间。
2、如果在其中的一个使用函数中发现了错误,则必须重新编译和重新发布调用那个使用函数的每一个可执行文件。
动态链接
为了避免这个问题,开发人员就把函数库编译为独立的二进制文件,每一个可执行文件都可以动态地与那些二进制文件进行链接。这样,几个可执行程序就可以共享相同的二进制库文件,即动态链接库(DLL)。如果想要修改实用程序,只需要重新发布函数所在的dll即可,而不必重新编译和发布调用使用函数的所有可执行文件。
尽管dll非常方便和有效,但是它有一个大的缺点:Dll是与具体的语言相关的,也就是说,由C源代码编译而成的dll也只能有C编写的客户程序引用。
COM 指的是组件对象模型(Component Object Model)
COM是代码重用性进化到现在的成果。使用COM,程序员可以使用C++ 之类的语言编写库,并对所编写的库进行编译,然后就可以在与COM兼容的语言中(例如Dephi或者Visual Basic等)使用库中的类了。COM是比其他技术更为基础的技术,例如OLE(Object Linking and Embedding)和ActiveX控件等等!
COM+ Services
COM+ Services是COM技术的最新版本,COM Technology最初因Microsoft Transaction Server而闻名。现在,COM+ Services是Windows2000操作系统的一个组成部分,其中的COM组件可以调用Windows2000操作系统,从而满足组件功能性的一般需要。
以上文字摘自《C#高级编程》