2011-06-13 113 views
2

我前幾天有人問我是否用Java開發過程。當我說我的技能在.NET Framework技術中時,他說這些是惡魔的化身。我不想打開古老的辯論,但他說了一件我以前沒有聽說過的話,並想知道是否有人可以說出一些看法。.NET Framework和COM

他說.NET框架是建立在COM之上的。這是真的?有人可以擴大嗎?

+2

http://stackoverflow.com/questions/2280639/is-net-all-comment-underneath – SLaks 2011-06-13 20:00:44

+0

在CLR中恰好有*一個* COM接口。您在異常堆棧跟蹤中獲得的文件+行號信息由知道如何讀取.pdb文件的COM類生成。 Windows中有很多COM正在使用。框架(與CLR截然不同)具有包裝類,使其看起來毫不費力且易於使用。就像Java一樣。 – 2011-06-15 01:31:07

回答

0

他錯了。

但是,.Net可以將互操作。

0

這是不正確的,沒有什麼可以展開的。 .net框架可以與COM互操作,但就是這樣。你的朋友應該堅持Java!

3

Windows上的部分框架是在com上實現的(也就是說,實現使用了COM對象) - 在.NET的每個新版本中,這種情況越來越少。但是,如果您正在討論編譯器和運行時(而不是.NET庫和使用.NET語言編寫的代碼),我相信這些是用C++編寫的,而且可能使用COM(再次,在Windows上)。

還有一些.NET的替代實現,最着名的是Mono,它可以在Linux/Mac/Andriod和Windows上運行。由於大多數這些平臺都沒有COM,因此您可以看到,.NET根本不需要使用COM。

這只是如何一些的MS .NET框架已經實施。

0

重要嗎?是的,大多數Windows API(除了win32/64 API)都是COM。這包括大多數控件.NET在一個漂亮的託管包和所有的DirectX接口(WPF廣泛使用)中爲你打包。

那麼是什麼?

0

確實,.Net最初是建立在COM之上的。實際上,框架中的許多API調用可以直接追蹤到COM對象或win32 API層的調用。認識到這只是一個實現細節很重要。查看mono的開源版.Net。它顯然不是建立在COM之上的,它被認爲是編寫Android,Mac,Iphone和Linux應用程序的絕佳平臺。

請記住,在宗教戰爭中沒有贏家。

0

我想這取決於他的意思是「建立在COM之上」。在這個意義上,框架提供了一個內置的橋接來託管和調用COM對象,以及多個COM接口作爲運行時本身的一部分,是的。在每個.NET對象都是COM接口的意義上,當然不是;我想象虛擬機本身不是建立在COM之上的。

當推動推動時,答案是「無關緊要」 - 如果框架滿足您的需求,性能足夠,並且您對庫和開發工具感到滿意,那麼它的基礎應該是什麼如果它被破壞或者當你搞亂內部時,這兩者(我想)都不是這樣。

0

不正確。 .NET能夠與COM庫進行交互,但不依賴於它們,完全依賴於它們。此外,任何對任何事物感到強烈的人都應該被懷疑。即他/她的意見應該以一粒鹽來進行。

另一個...你的同事對COM有什麼反應?當然,現在有更好的辦法可以做事,但COM在當時是一個好主意,而且在未來幾年內COM將會繼續存在。

0

不,不是。您可以與它互操作並訪問諸如Excel和Outlook之類的程序,但它不是基於它構建的。當你進入商業世界時,你的朋友會覺得有些粗魯的覺醒,並意識到它很多是.NET(儘管當然也有很大一部分是Java和本地語言)。

0

這是一個非常簡單的觀點。

有關技術細節,@SLaks在評論中引用的dup問題說明了這一切。 .Net的目的是在Windows(整個操作系統,而不僅僅是COM和DCOM部件)上解決複雜的技術問題要容易得多 - 目標是開發速度和代碼的簡單性。就像Java旨在爲跨平臺開發所做的一樣。

如果你看看C#(最常見的.Net語言)與Java的最新發展軌跡,那麼越來越難以爭辯說Java作爲一種編程語言前進了,儘管它確實曾經是。我總是對柵欄兩側的這種狂熱感到懷疑。無知引起蔑視。