「.NET」平台到底是什麼?
現今大家對於「.NET」平台的看法有點類似寓言「瞎子摸象」,觀點不同,自有不同的想法。有些人說「.NET」是微軟的下一代 Visual Studio 開發環境;有些人說它是一個新的程式語言(C#);還有些人說它是以 XML 和 SOAP 為基礎的資料交換與傳遞訊息的機制。其實,上述三者都是「.NET」想扮演的角色,而且還不止於此。
讓我們先得到一些較具體的觀念。下面列出「.NET」平台內部的組成:
C# 是一個「新程式語言」,用來撰寫類別和元件。C# 融合了 C/C++ 和 Java 的特色,還多了一些其它的特色,比方說 metadata tag。
一個「通用語言的執行時期系統(common language runtime)」,用來執行 IL 格式的程式碼。任何語言的原始程式只要被編譯成 IL 格式之後,就可在「.NET」平台執行。
一組「基礎元件」,提供多樣的功能(例如:網路),以供執行時期系統使用。
「ASP+」,是新版的 ASP,能讓 ASP 被編譯成 IL 的格式。
「Win Form」和「Web Form」,是一組新的 UI 元件骨架,供 Visual Studio 使用。
「ADO+」,是新版的 ADO,使用 XML 和 SOAP 來進行資料存取和資料交換。
「.NET」和 J2EE 有哪些差異?
如你所見,「.NET」平台是一堆技術的組合。微軟把這些技術當作現有技術(例如:J2EE 和 CORBA)的另一種選擇,但實際上比較起來又是如何呢?下面是我們的一些分析比較:
然而,「.NET」平台的一些目的太過崇高,不保證能達得到(至少短期內是如此)。比方說,IL 執行系統有一些很明顯的難題待克服,想整合進此系統的每個語言必須清楚地定義如何對應到 IL,以及 IL 所需的 metadata。某語言要相容於 IL 來必須提供編譯器(x 語言轉 IL,和 IL 轉 x 語言)。
對 Java 和 Open Source 族群來說:
「.NET」很容易被視為微軟基於市場需求所推出的解決方案。其實,「.NET」是微軟開始策略改變的徵兆。以往微軟在面對其它架構和平台有不錯的戰果,現在他們面對了來自 Java 和 open source 的壓力,開始有了「開放」的跡象,也試著直接去滿足程式員的需求,這可是和以往的老大作風大不相同。如果你是 Java 或 open source 的愛好者,請注意:這場戰爭的本質已經有所改變了。
而且,微軟的 IL 執行時期系統有一點值得注意的目標:消弭程式語言和 API 之間的藩籬。Java 消弭了平台間的藩籬,但是如果你想使用 J2EE,你就必須搭配 Java 語言。「.NET」想讓你使用你喜愛的語言來開發「.NET」程式,這點是很了不起的(但結果是否會成真仍是個大問號)。從這點來看,J2EE 就比不上「.NET」,但是這點應該不算太重要。
J2EE 如果想迎戰「.NET」,有幾個議題應該立刻被注意到。首先,J2EE 應該將 XML 好好地整合進來。我不是指制定 XML SAX/DOM 的 API,也不是指拿 XML 當作設定檔格式,我說的是 XML 的訊息交換和處理應該被加進 J2EE。當然,目前你可以用 XML 格式當作 JMS 訊息內容,但整個 J2EE 卻不會因此受益。XML 是一堆標準的集合,包括業界標準的 API 和 DTD,這應該都是資料交換時可以享受到的好處才是。