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組件都進行了註冊配置,是全局可用的。反射

相關文章
相關標籤/搜索