星期二, 5月 10, 2005

什麼是 Microsoft .NET ?

按:這篇文章的寫作時間大約是2002年左右,經重整後登於此。

Microsoft .NET (簡稱 .NET) 是微軟結合其下眾多產品與技術的『集合名詞』,也就是說 .NET 是一群產品和技術的集合;但某些狀況的.NET卻只是行銷名詞。

微軟非常善於創造名詞,還記得 ActiceX 嗎?微軟在推出 ActiveX 的當時,也連帶推出了一系列 ActiveX 相關的技術或產品,以及一大堆令人迷惑的 ActiveX 名詞:ActiveX Controls、ActiveX Document、ActiveX Scripting Language、Active Server Pages...。現在,微軟推出了 .NET,所以你已經或即將見到、聽到、讀到一系列 .NET 相關的名詞--可能是技術、可能是產品。

如果要我解釋 .NET,我會說 .NET 是微軟對資訊產業的遠景 (我也不反對用「霸業」這個字眼),很抽象嗎?的確。關於 .NET 的抽象解釋就是:因為資訊界經過 Internet 的衝擊與洗禮之後,擁抱與吸納 Internet 是現今資訊產業的大策略,而微軟擁抱、吸納 Internet 的作法,是希望以 .NET 創造出一個不論使用者身處何處、使用哪一種硬體平台或軟體系統都能夠連接 Internet 並存取 Internet 資料的資訊世界。為了要達到如此的遠景,微軟獨自或參與規劃了包括硬體架構、作業系統、伺服器軟體、程式開發工具、網路通訊協定等產品或技術,希望整合這些產品或技術,並且與其他廠商共同合作,完成 .NET 的資訊世界。

但其實每一家軟體大廠都有相同或類似的遠景,例如 IBM 的「普及運算」(Pervasive Computing)、昇陽的 Sun ONE (Sun Open Net Environment)。

以下是 .NET 重要元素的分項說明。

硬體架構

軟體必須架構在硬體之上才能執行,而除了 Wintel 硬體架構之外,微軟另外規劃了名為 "Smart Device" 的硬體架構,目的當然是要將擴展 .NET 的執行環境;Smart Device 包括了 Packet PC、Handheld PC、Smartphone、Mira、Tablet PC 等移動裝置。

作業系統

目前包括用戶端及伺服器端的 Windows 都可以作為 .NET 的作業系統。此外微軟也積極開發下一代的 Windows 系統,包括伺服器端的 Windows .NET Server、專案代號為 Longhorn 的下一代用戶端 Windows 系統 (Windows XP 的後續版本),以及 Smart Device 專用的 Windows CE.NET (Windows CE 的後續版本)。

.NET Framework

.NET Framework 是 .NET 的基礎核心,它架構在硬體與作業系統之上,並且汲取硬體和作業系統所提供的資源,再加上本身提供的 CLR (Common Language Runtime) 及類別程式庫,成就了 .NET 程式所需要的執行環境。







. NET 程式

.NET 類別程式庫 (.NET Class Library)

CLR (Common Language Runtime)
作業系統
硬體架構

對整個 .NET 環境而言,CLR 是個提供 .NET 程式執行環境的虛擬機器 (Virtual Machine),它利用 Garbage Collection、CTS (Common Type Specification)、Exception Handling 等機制提供了穩定的執行環境。而 .NET 類別程式庫提供絕大多數程式需要的類別,從基本的 記憶體管理、檔案管理、資料庫存取 (ADO.NET、XML)、繪圖功能 (GDI+)、程式的介面設計 (Web Service、WinForm、WebForm),程式開發人員可以直接將這群豐富的程式庫用在 .NET 程式。

理論上,任何軟硬體架構只要有適當的 .Net Framework,該軟硬體架構便可成為 .NET 程式的執行環境。目前的 Windows 98/98se/Me/NT+SP6/2000+SP2/XP 均可安裝 .NET Framework for Win32,以執行 .NET 程式,而後續的 Windows 作業系統都會內建 .NET Framework,包括 Windows .NET Server 以及 Longhorn (Windows XP 的後續版本)。

除此之外,產品發展甚為蓬勃的移動式裝置亦有專屬的 .NET Framework--稱為 .NET Compact Framework。而微軟亦著手將 CLR 移植到非 Windows 的平台,目前進入公開測試階段的專案是 Rotor,這是個公開程式碼 (Shared Source) 的專案,其中包括了 Win32 和 FreeBSD 4.5 兩種平台。也就是說目前已經可以在 FreeBSD 上開發 (利用 C#)、執行 .NET 程式。

對於想要在 .NET 平台開發程式而言,.NET Framework 絕對是焦點中的焦點,不過本文旨在說明 .NET,而關於 .NET Framework 以及所屬的 CLR、.NET 類別程式庫等重大議題,我將在往後的文章陸續討論。

伺服器軟體

名為 .NET Enterprise Servers (請注意,不是 Windows Server 2003 哦!) 的伺服器軟體其實是一群微軟現今伺服器軟體的集合,以及後續的版本更新,包括了:
  • Application Center 2000
  • BizTalk Server 2000
  • Commerce Server 2000
  • Exchange Server 2000
  • Host Integration Server 2000
  • Internet Security and Acceleration Server 2000
  • SQL Server 2000

依照微軟的說法,.NET Enterprise Servers 提供了 .NET 資訊世界後端的資料儲存媒介和程式執行平台,可以大幅縮短 IT 人員規劃、部屬 .NET 後端軟體的架構、時間、成本,同時也藉由 Framework 及 SDK 輔助程式開發人員開發 .NET 後端程式--包括傳統的伺服器端程式以及 Web Service 程式。

雖然微軟將伺服器軟體也併入 .NET 架構,不過我倒認為以程式設計的角度,您暫且將這些伺服器當作 .NET 程式的伺服端即可;也就是說,先將焦點放在 .NET Framework 即可。

程式開發工具

Visual Studio.NET 不僅是 Visual Studio 的後續版本,更是微軟為了普及 .NET 程式、加速程式開發人員完成 .NET 程式的程式開發工具。Visual Studio.NET 以視覺化的方式呈現 .NET Framework 所提供的類別程式庫,並且提供了整合的開發環境 (尤其整合了前後端的執行環境),讓程式開發人員從中完成 .NET 程式的規劃、coding、測試、除錯。

Web Services

為了要達到 .NET 資訊世界,讓不同的平台能夠相互存取資料,微軟與其他軟體大廠都想要藉助 Web Services 的力量;這項技術不僅是 .NET 運作的基礎建設,而且也是業界標準。

Web Services 是一種新型態的軟體應用方式,就商業應用的角度而言,甚至可以將它視為 EDI (Electronic Data Interchange,電子資料交換) 的後繼應用。簡單來說,Web Services 希望讓執行在各種不同平台、以不同語言所開發的程式,都能夠共享運算結果。

分散式運算的新趨勢--軟體即服務

網路的普及與電腦運算能力的提升,都同時加速了分散式運算的普及,而 Web Services 更將催化分散式運算的應用。藉由 Internet,Web Services 可以讓程式分散到不同的地點,並且以低廉的成本輕易的相互分享運算結果。

而 Web Services 更將整合異質運算環境當作首要目標,不論程式在哪一種作業平台執行,也不管程式是用哪一種語言開發,Web Services 都能整合這些出處不同的程式,讓這些程式以低廉的成本就能夠輕易的分享運算結果。

要達到上述的目的,勢必將改變現今軟體的面貌,軟體不只可以讓使用者「執行」,而且也是運算結果的提供者 (Provider),提供運算服務給要求服務的程式--也就是運算結果的消費者;也就是說「服務提供者」將在 Internet 上等待「服務消費者」提出要求,進而服務消費者。

廣泛採用業界標準技術

Web Services 涵蓋了許多技術與網路通訊協定:
  • XML (eXtensible Markup Language):異質資料的交換標準,同時也是 Web Services 的核心技術。
  • SOAP (Simple Object Access Protocol):以 HTTP 和 XML 為基礎的資料傳送方式。異質資料得以交換還不夠,更必須制定一套標準的通訊協定,才能完成資料的傳遞。
  • WSDL (Web Services Description Language):也是以 XML 為基礎,WSDL 制訂了一套軟體該如何使用 Web Services 的語言。
  • UDDI (Universal Description, Discovery, and Integration):同樣以 XML 為基礎,UDDI 提供了 Web Services 的目錄登錄機制,讓服務消費者或其他的服務提供者知道哪裡有軟體服務。
軟體大廠皆有自己的解決方案:對提供解決方案的軟體大廠來說,Web Services 是絕對的商機,而兩大對立陣營也各自有其技術、解決方案和擁護者。.NET 便是微軟陣營提出的 Web Services 解決方案,而以昇陽為首的 Java 陣營,則是祭出 J2EE (Java 2 Enterprise Edition)、J2SE (Java 2 Standard Edition)、J2ME (Java 2 Mobile Edition) 三種不同版本的 Java 平台,企圖全面攻下所有的運算平台。

結論

這篇短文的目的試著宏觀的角度解釋 .NET,如果對 .NET 程式的開發有興趣,接下來應該將焦點放在 .NET Framework,以及相關的開發工具--包括 .NET Framework SDK、Visual Studio.NET 等等。

0 意見: