静态链接、动态链接、COM、COM+ 的一些概念

   
由于
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+ ServicesCOM技术的最新版本,COM Technology最初因Microsoft Transaction Server而闻名。现在,COM+ ServicesWindows2000操作系统的一个组成部分,其中的COM组件可以调用Windows2000操作系统,从而满足组件功能性的一般需要。

 

以上文字摘自《C#高级编程》

你可能感兴趣的:(com)