COM 组件 V.S. .NET

1、元数据spa



    1. 在COM中全部组件信息都存储在类型库中。

 

    1. .NET中信息都存储在数据集中。

 

    1. 一些COM组件有类型库,一些却没有(如VB编的,由于C++能够用IDL——接口定义语言表述接口和方法,而VB不行)。没有的话须要用C++头文件来表述接口和方法。


2、释放对象设计



    1. .NET经过垃圾回收器释放对象。

 

    1. COM组件经过引用计数管理对象,若是引用数降为零了就释放对象。


3、接口对象

 

COM有三种接口:接口



    1. 定制接口:IUnknown + 自定义接口虚方法表

 

    1. 分派接口:IDispatch

 

    1. 双重接口:IUnknown + IDispatch + 自定义接口虚方法表


4、方法绑定配置



    1. .NET前期绑定方法:虚方法表

 

    1. .NET后期绑定方法:反射

 

    1. COM前期绑定方法:设计时经过GetIdsofNames()获取方法ID,运行时只需调用Invoke()便可。

 

    1. COM后期绑定方法:运行时调用GetIdsofNames()获取方法ID,再调用Invoke()。


5、数据类型垃圾回收

 

对于分派接口和双重接口,COM使用的数据类型局限于一个自动兼容的类型列表。VARIANT是许多类型(如BYTE、INT、LONG)的组合,与.NET中Object对应。数据类型

 

 

 

6、注册引用

 

.NET区分私有程序集和共享程序集。每一个COM组件都进行了注册配置,是全局可用的。反射

相关文章
相关标签/搜索