".NET支持COM嗎?"
"COM+和MTS在.NET上如何存在?"
".NET組件和COM組件有什麼區別?"
COM+在.NET中依然存在,如果應用程序確實需要使用COM+和MTS的功能特性,那麼可以選擇合適的技術與.NET組件協同工作。實際上,組件是任何類型解決方案的一部分,不管是分布式解決方案還是非分布式。組件在.NET環境中非常類似一個COM組件,它們都是DLL,包含一個或多個類,能夠被其他應用程序實例化。兩者主要的不同點在於它們的實現方法,這裡我們不去詳細討論技術細節。
在應用程序中考慮使用什麼樣的組件有多種選擇。使用COM+還是MTS。COM+和MTS都能夠與COM組件協同工作。因此,當創建一個組件時,該組件必須符合COM的二進制標准,而且需要在使用之前向注冊表注冊。
.NET Framework通過COM Interop(COM互操作)技術支持COM+和MTS。一個傳統的COM應用程序能夠調用一個.NET組件,同時.NET組件(在.NET中稱為.NET Assembly)也能夠調用一個COM組件。這一非常強大的雙向互操作特性使你可以在應用程序中混合使用兩類技術。
COM+與MTS是與COM組件協同工作的。當你放置一個.NET組件到到一個MTS包或者一個COM+應用程序中,該組件仍然能夠以同樣的方式被一個.NET應用程序調用,此時,你不會意識到COM+和MTS的存在。
下面我們來看一看在使用COM Interop時的性能開銷。.NET和COM使用不同的執行機制(.NET使用通用語言運行時,Common Language Runtime,而COM則不是)。.NET組件和COM組件在不同的標准上實現(.NET組件使用通用類型標准,而COM使用二進制標准)。兩者之間的互相調用會增加一些性能開銷,事實上,每執行一次互操作調用大約花費20到30條CPU指令。當你調用一個存在於COM+中的類方法時,每次調用都會出現這些性能方面的開銷。
如果一定要使用COM+和MTS的功能特性,請把組件存放於COM+和MTS中並確認你需要所有功能特性。如果組件只在一個數據庫中執行事務處理,而且一直都在單個數據庫環境中工作,那麼不需要在使用COM+來完成事務管理,僅僅使用ADO.NET就可以了。反之,如果需要多個數據庫間的對象池和事務處理支持,那麼應用程序就需要COM+和MTS。