通過擁抱云計(jì)算和開源,微軟正在試圖不落后于競爭對手,使自己仍然是開發(fā)者的首選廠商之一。實(shí)際上,早在2000年微軟已經(jīng)通過引入.NET開始了一場巨大的平臺轉(zhuǎn)移行動。.NET最初在2000年阿姆斯特丹舉行的TechED大會上被宣布,然后在后來的微軟專業(yè)開發(fā)者大會上更多信息得以披露。在此后的10年中,.NET是否實(shí)現(xiàn)了微軟所承諾的東西?
微軟推.NET背景
如果你考慮一下微軟推出.NET時(shí)的處境,就會更好的理解它這么做的原因。當(dāng)時(shí),Windows的核心地位不僅正在被互聯(lián)網(wǎng)所侵蝕,而且受到了Sun的Java語言和運(yùn)行時(shí)的強(qiáng)力挑戰(zhàn)。使用Java編程更輕松,它具有現(xiàn)代化的設(shè)計(jì)和自動內(nèi)存管理,而且具有自己的跨平臺,當(dāng)時(shí)已被IBM和甲骨文等IT巨頭大力支持。
微軟曾試圖增加諸如COM組件等Windows特定功能到Java中,但得到的是來自Sun公司的10億美元法律訴訟,稱其做法破壞了跨平臺兼容性。COM是一個(gè)用于應(yīng)用程序整合的自帶Windows組件。
微軟的開發(fā)者工具也看上去疲態(tài)盡顯。Visual Basic存在不足,明顯動力不足,受初學(xué)者歡迎卻不為專家級開發(fā)者所接受。Visual C++和Windows類庫卻又對所有人較難。同時(shí),使用COM和ASP的Web開發(fā)又顯得非常雜亂和不堪一擊。
針對上述情況微軟給出的解決答案非常大膽。總經(jīng)理邁克爾里斯(Michael Risse)在2000年TechEd大會上表示,我們計(jì)劃推出一個(gè)名為Microsoft .NET Platform的全新平臺,它由三部分組成。首先,它有一個(gè)新的公共語言運(yùn)行時(shí),它除了支持Visual Basic和C++等現(xiàn)有語言外,還支持一個(gè)名為C#的新語言,該語言由Borland Delphi著名的Anders Hejlsberg設(shè)計(jì),擁有許多來自Java的類似概念。
其次,它有眾多組件塊(Building Block)服務(wù),是通過互聯(lián)網(wǎng)借助于XML網(wǎng)絡(luò)服務(wù)進(jìn)行訪問的一整套服務(wù),其中微軟Passport是早期的一個(gè)例子。
最后,所有微軟現(xiàn)有的服務(wù)器產(chǎn)品被重新加工為.NET服務(wù)器,使用XML作為統(tǒng)一協(xié)議。里斯將下一代應(yīng)用稱為世界性的畫布,由不同單個(gè)Web服務(wù)合適的搭配在一起的集合。在他宣布了.NET之后,服務(wù)器產(chǎn)品BizTalk作為示范被演示,里斯希望它可以合理協(xié)調(diào)這些服務(wù)。
.NET十年得失
如果.NET的目標(biāo)是趕走Java,那么它至少取得了一定程度上的成功。Java雖然沒有滅亡,但企業(yè)版Java卻身陷過于復(fù)雜的泥潭,從而使得.NET成為一個(gè)更富有成效的選擇。C#在不斷的變得更加普及,現(xiàn)在已經(jīng)是多數(shù)Windows應(yīng)用開發(fā)的首選語言。ASP.NET則已經(jīng)成為一個(gè)倍受歡迎的Web框架。公共語言運(yùn)行時(shí)則證明了自己的穩(wěn)定性和靈活性。
據(jù)分析機(jī)構(gòu)提供的數(shù)據(jù)顯示,市場對C#人才的需求一直在穩(wěn)步增長,在英國IT編程領(lǐng)域,與C#相關(guān)的招聘職位數(shù)量所占份額已經(jīng)達(dá)到32%,超過了Java的26%。
盡管如此,.NET的發(fā)展并非一切按微軟的預(yù)定計(jì)劃進(jìn)行。其組件塊服務(wù)理念在提出后次年即遭到打擊,在2001年微軟專業(yè)開發(fā)者大會上微軟推出了HailStorm理念,但它無法推廣把自己定位成全球性服務(wù)提供商的理念。兩年后在2003年微軟專業(yè)開發(fā)者大會上,該公司宣布了Longhorn的三大改進(jìn),試圖實(shí)現(xiàn)一個(gè)具有.NET用戶界面的Windows版本,此舉也遭遇失敗,后來倉促被Windows Vista所取代。
其它事情進(jìn)展的緩慢程度也超出了所有人的預(yù)期。盡管C#取得了成功,但現(xiàn)有Visual Basic開發(fā)者發(fā)現(xiàn),很難移植它們的項(xiàng)目到一個(gè)名稱相同但實(shí)際完全不同的語言。.NET框架中的Windows Form部分占用資源極大,而且.NET運(yùn)行時(shí)的部署也時(shí)而出錯(cuò)。
微軟又花了8年時(shí)間提出了一個(gè)Client Profile的理念來實(shí)現(xiàn)精簡安裝。.NET控制在瀏覽器中安全替代Active X的理念從未實(shí)現(xiàn),部分原因是其運(yùn)行時(shí)不夠普及,部分原因是以合理方式實(shí)現(xiàn)這一點(diǎn)的技術(shù)在2008年Silverlight問世之前從未真正到位。
如果微軟使用它會怎樣?
一個(gè)長期的抱怨是微軟本身也一直遲遲未能采用.NET。微軟的Tony Goodhew在2000年TechEd大會上曾表示,微軟未來將使用.NET框架。但是,該公司一直繼續(xù)使用本機(jī)代碼和C++作為Windows和Office的主要開發(fā)平臺。COM從未真正離去,對那些希望使用新Windows 7 API的.NET開發(fā)者來說,必須使用了一個(gè)包裝函式庫來實(shí)現(xiàn)這一點(diǎn)。
換句話說,微軟逐漸將.NET定位成一個(gè)企業(yè)應(yīng)用平臺,而非它原先所說的創(chuàng)建所有東西的基礎(chǔ)平臺。
2000年,微軟驕傲的宣稱,C#和公共語言基礎(chǔ)架構(gòu)將被ECMA標(biāo)準(zhǔn)化,矛頭直指Sun,后者已決定在它自己的Java社區(qū)化進(jìn)程中來維護(hù)Java,而不是將其交給一個(gè)公共標(biāo)準(zhǔn)組織。
盡管這帶來了諸如開源Mono等一些有趣的項(xiàng)目,該框架的類庫和ASP.NET依然徘徊于標(biāo)準(zhǔn)化進(jìn)程之外,而且便攜式.NET應(yīng)用的理念從未實(shí)現(xiàn)。微軟不可能把這一點(diǎn)看作一個(gè)失敗,但實(shí)際這就是一個(gè)失敗。
現(xiàn)在即將進(jìn)入新的十年, 盡管.NET的成功之處要大于失敗之處,如果微軟希望減少未來十年其平臺面臨的威脅,它至少需要提出某些大膽的新戰(zhàn)略。