1、元數據spa
- 在COM中全部組件信息都存儲在類型庫中。
- .NET中信息都存儲在數據集中。
- 一些COM組件有類型庫,一些卻沒有(如VB編的,由於C++能夠用IDL——接口定義語言表述接口和方法,而VB不行)。沒有的話須要用C++頭文件來表述接口和方法。
2、釋放對象設計
- .NET經過垃圾回收器釋放對象。
- COM組件經過引用計數管理對象,若是引用數降爲零了就釋放對象。
3、接口對象
COM有三種接口:接口
- 定製接口:IUnknown + 自定義接口虛方法表
- 分派接口:IDispatch
- 雙重接口:IUnknown + IDispatch + 自定義接口虛方法表
4、方法綁定配置
- .NET前期綁定方法:虛方法表
- .NET後期綁定方法:反射
- COM前期綁定方法:設計時經過GetIdsofNames()獲取方法ID,運行時只需調用Invoke()便可。
- COM後期綁定方法:運行時調用GetIdsofNames()獲取方法ID,再調用Invoke()。
5、數據類型垃圾回收
對於分派接口和雙重接口,COM使用的數據類型侷限於一個自動兼容的類型列表。VARIANT是許多類型(如BYTE、INT、LONG)的組合,與.NET中Object對應。數據類型
6、註冊引用
.NET區分私有程序集和共享程序集。每一個COM組件都進行了註冊配置,是全局可用的。反射