.NET跨平臺的理想並非南柯一夢
Linux軟體商Ximian所進行的.NET開放原始碼計畫Mono,希望開發人員可建立Linux與Unix平臺下的.NET應用。Ximian的另一個高知名度的開放原始碼計畫,是Linux的開放原始碼桌面環境GNOME(GNU Network Object Model Environment)。2003年Novell買下Ximian後,接手了Mono計畫,預計在Novell的支持下,Mono計畫將更加順利。
根據ECMA的規格實作
Mono專案始於2001年,2003年10月首次發表的Mono 1.0,等同於.NET Framework 1.1。Mono被定位在希望未來能成為開發Linux及跨平臺應用程式的首選,實作是根據ECMA組織的C#及CLI(Common Language Infrastructure)的標準,包括C#語言的編譯器、CLR(Common Language Runtime)及類別庫。類別庫包含微軟.NET相容的ADO.NET及ASP.NET,及第三方合作夥伴的類別庫GTK#。
藉由GTK#,開發人員將可利用Mono開發原生的GNOME應用程式。Mono的執行環境可被嵌入應用程式中,以便於封裝及遷移。此外,Mono專案提供整合開發環境、除錯器並可產生文件。.NET跨平臺Mono不是唯一
事實上,跨平臺的.NET實作目前除了Mono之外,還包括微軟本身的Shared Source CLI、DotGNU的Portable.NET。微軟推出Shared Source CLI並非以營利為目的,微軟開發工具暨平臺推廣處產品行銷經理許建志表示:「Shared Source CLI用意是提供學術界的學生及教授研究,讓大家更了解.NET的底層運作。」
開放原始碼社群針對.NET成立的DotGNU專案,也根據ECMA的規格研發Portable.NET,希望提供可編譯並執行.NET應用程式的免費軟體。與Mono不同的是,Portable.NET由開放原始碼社群維護;而Mono目前則由Novell接手。
一般認為.NET Framework是微軟單一廠商主導,開放原始碼社群雖然遵循ECMA的規格實作,仍可能衍生不同的版本,因此難以持久一致。而Mono從最初的Ximian到現在由Novell主導,可監控運作並維持一致的發展方向,不會分歧出多種版本,因此較被業界看好。Mono希望提供比Java更好的生產力
現今的Linux開發環境雖然強大,但Python、Perl、C及C++卻有陡峭的學習曲線,Mono希望提供利用.NET簡單易學的特性,強化Linux平臺的生產力。
目前已有大量的開發人員轉向.NET及Java,選擇可管理的執行時期環境(Runtime Environment),新增物件、呼叫方法、管理記憶體配置及作業系統的資源存取等工作,都交由執行時期處理,因此Managed Code比C或C++等程式更安全。
然而,Java程式常缺乏客戶要求的效能,而且Java應用程式與Linux圖形使用者介面的觀感有落差。針對Java的效能,昇陽電腦教育訓練中心經理王森解釋:「Java的效能並不差,但在小型應用的測試比較吃虧,大型的應用程式才能展現Java的效能與穩定性。」
.NET及其新的程式語言C#,提供原生碼(Native Code)的效能與外觀,搭配Common Language規格的編譯器,程式可自由地跨語言混合。
因此,Mono實作.NET開發平臺,提供撰寫Linux平臺的.NET開發環境,可開發用戶端程式、Web Services及伺服器端應用程式,而且可部署至Linux、Netware、Mac OS及Windows作業系統。希望藉由.NET的生產力,降低開發Linux平臺應用程式的門檻,並協助企業遷移既有的知識及應用程式至Linux。
完全以.NET程式開發的應用程式,現在可無痛移植到Mono平臺執行,不過,由於Mono尚未實作System.management及Enterprise Services,這兩個與Windows作業系統相依性較高的部分,因此,有呼叫使用Win32 API的程式仍無法跨平臺在Mono上執行。未成熟但已有成功案例
歷經兩年時間Mono尚未完成100%移植.NET平臺,微軟預計2005年推出代碼為Whidbey的.NET Framework 2.0,其中ASP.NET 2將提供許多新的功能,因此,業界不免擔心Mono如何因應.NET Framework 2.0的變革。
許建志表示:「從ASP到ASP.NET的確有很大的不同;但ASP.NET到ASP.NET 2則是在既有的基礎上,增加新的功能。」因此無論是微軟的.NET平臺或Mono,原來的ASP.NET程式都無需修改即可使用。Novell則表示,微軟都會將規格送交ECMA,因此Mono可以持續實作任何新的規格,對應.NET Framework 2.0的Mono 1.2及Mono 2.0,預計將陸續在2004年第四季及2005年第二季完成。
對於Windows Form的支援,Novell表示,Mono 1.2將以GTK#為底層,實作System.Windows.Forms,提供開發人員更豐富的元件。至於Mono的開發介面,目前仍非RAD(Rapid Application Development)工具,無法拖拉點選元件,設計使用者介面,成熟度仍嫌不足。不過,在開發人員撰寫程式時,Mono已可自動顯示元件可使用的屬性或行為,優於文字編輯器的便利性。
即使Mono仍未完全實作.NET,但Novell表示目前已有成功上線的案例,其中一家Voelcker Informatik的公司,利用Mono開發ASP.NET,提供德國慕尼黑網站上的服務;SourceGear軟體商則開發Vault Software 2.0是Linux平臺的開發版本控管產品。事實上,只要不使用Win32 API, Windows .NET程式已可移植到Mono上執行,利用ASP.NET及ADO.NET搭配Apache網頁伺服器,也足以建構網頁應用程式。
微軟樂見.NET市場的壯大
許建志表示:「微軟持續關注各界對.NET的實作,並樂見這樣的發展。」微軟將.NET的規格提交至ECMA,即是希望.NET成為標準,讓廠商根據標準,各憑本事研發.NET的工具或各種平臺的實作。Mono團隊也曾與微軟聯繫,針對.NET技術尋求支援。
微軟除了在既有的市場上提高.NET的佔有率,也希望作大市場,吸引更多非微軟的開發人員。Mono能吸引Java及PHP的開發人員至.NET平臺,過去C++、C的生產力不高,Mono可將.NET的生產力帶到Linux平臺。不過,從作業平臺的角度分析,跨平臺的.NET也相對壯大了Linux平臺的應用,對微軟而言真是魚與熊掌難以兼得。
無論Mono或Portable.NET,至今都尚未100%移植.NET,因此Java仍是跨平臺應用的首選。不過.NET確實藉此走出了Windows作業系統的藩籬,可應用於更廣泛的平臺及裝置。王森認為:「有競爭是好事,可強化IT技術精進的動力。」企業未來在思考跨平臺解決方案時,將有更多元的選擇。名詞解釋
GTK+(GIMP Tool Kit):一套以C語言為程式設計介面的圖形使用者介面工具集(GUI ToolKit),是Linux平臺常用的GUI 環境開發語言,GNOME就是由 GTK+ 開發。
GTK#:GNU LGPL(Lesser General Public License)開放原始碼類別庫,以C#程式繫結GTK+工具集及GNOME平臺的程式庫。
GNOME(GNU Network Object Model Environment):開放原始碼的桌面環境,是GNU專案的一部份,目的在於建立完整而友善的桌面環境。
ECMA:是一個國際性的產業標準組織,創立於1961年致力於資訊與溝通技術的標準化。目前制定的標準範圍包括軟體的引擎與界面、資料呈現、資料溝通、實體媒介的資料交換、共同電子通訊網路、系統互通及無線感應系統,DVD及手機簡訊的標準即出自ECMA,C#及CLI分別為ECMA-334及ECMA-335的規格。文⊙李延華
熱門新聞
2024-11-05
2024-11-05
2024-11-07
2024-11-04
2024-11-02
2024-11-07