|
文 / 劉如鴻
2000年對于微軟是頗有意思的一年,一方面終于邁入了21世紀(jì),擔(dān)心許久的千年蟲問題也沒有預(yù)想中的那樣大面積爆發(fā),通過Windows 95和Windows 98的成功,微軟在桌面電腦市場取得了絕對壟斷的地位。雖然官司不斷,但通過IE捆綁策略也終于徹底打敗了傲慢的NETscape,搭上了互聯(lián)網(wǎng)班車。而Windows 2000的發(fā)布也結(jié)束了Windows 98和Windows NT兩個平臺互不兼容、互相掐架的問題,在全新的NT 5.0內(nèi)核上,服務(wù)器和客戶端操作系統(tǒng)終于得到了整合。至于辦公軟件領(lǐng)域,從Office 97之后已經(jīng)睨視宇內(nèi),Lotus Note已經(jīng)漸漸退出市場,再也沒有了重量級的競爭對手。
可在開發(fā)工具領(lǐng)域,自從1998年發(fā)布Visual Studio 6.0之后,在語言的角度似乎已經(jīng)止步不前,鼓吹多年的COM技術(shù)依舊令人稱垢,極高的開發(fā)門檻加上本身的復(fù)雜性,使自家的VB始終不得其入。而在另一方面,1995年Sun公司推出的Java語言風(fēng)生水起,因為其倡導(dǎo)“一次編程,到處運行”,加上面向?qū)ο蟆⒗厥铡⒔研缘戎T多優(yōu)點,使得這個原本用來開發(fā)嵌入式設(shè)備和桌面應(yīng)用的語言反倒在服務(wù)器開發(fā)領(lǐng)域異軍突起。
反觀微軟本身,雖然Visual Studio 6.0號稱做到了同一開發(fā)平臺可以編寫多種語言,可實質(zhì)上只是不同語言、不同開發(fā)工具的大雜燴,不同語言之間是彼此孤立的,如果說和Java一樣,只是同樣做到了可視化開發(fā),或許這就是Visual Studio的本意。
不管是出于進軍中高端服務(wù)器市場的需要,還是對競爭對手戰(zhàn)略防御的考慮,微軟都需要一個全新的開發(fā)平臺來鎖定開發(fā)人員,使其能夠在微軟的平臺上進行開發(fā)和提供服務(wù),這不是令人晦澀的COM或者COM+,也不是Anders初到微軟的作品WFC(可有多少人還記得當(dāng)年的Visual J++?),也不會是VC++,因為令人絕望的MFC讓大多人望而怯步,當(dāng)然也不會是VB,它無法勝任相對底層的應(yīng)用開發(fā),當(dāng)然,更加沒有理由是Java平臺,這不符合微軟一直以來的風(fēng)格。
Windows 2000推出之際,微軟提出了一個NGWG(下一代的Windows服務(wù))的愿景,除了作為市場宣傳的噱頭,一個模糊定位的概念并沒有做到讓多少人明白,對于當(dāng)時已經(jīng)全球領(lǐng)先的微軟而言,需要一個全新的、充滿想象力的平臺來延續(xù)他們的成功。
2000年,在那年的6月22號,比爾·蓋茨向全球宣布其下一代軟件和服務(wù),即Microsoft .NET平臺的構(gòu)想和實施步驟。新一代的Microsoft .NET家族產(chǎn)品和技術(shù)替代了此前“下一代Windows服務(wù)(NGWS)”的提法,它涵蓋了幫助軟件開發(fā)商構(gòu)建下一代互聯(lián)網(wǎng)服務(wù)和給予新一代智能互聯(lián)網(wǎng)設(shè)備強大功能的軟件。此外,微軟還宣布了基于.NET平臺的新產(chǎn)品計劃,其中包括新一代的微軟Windows操作系統(tǒng)、Windows DNA服務(wù)器、微軟Office、MSN互聯(lián)網(wǎng)網(wǎng)絡(luò)服務(wù)、Visual Studio開發(fā)系統(tǒng)。
當(dāng)時,許多人懷疑這是否是微軟一次市場宣傳的Buzz Word,微軟是否會在未來的十年乃至二十年堅定地推進他們構(gòu)筑的.NET戰(zhàn)略。2000年微軟的白皮書這樣定義.NET:Microsoft® .NET 是Microsoft XML Web Services平臺。XML Web Services允許應(yīng)用程序通過InterNET進行通信和共享數(shù)據(jù),而不管所采用的是哪種操作系統(tǒng)、設(shè)備或編程語言。Microsoft .NET 平臺提供創(chuàng)建XML Web Services并將這些服務(wù)集成在一起之所需。對個人用戶的好處是無縫的、吸引人的體驗。
顯然,微軟把.NET戰(zhàn)略真正押寶在了XML Web Services之上,時隔十年之后,我們可能會說當(dāng)初微軟的決策是極具遠(yuǎn)見和充滿想象力的,可在當(dāng)時,孰是孰非誰人定論。在平臺正式推出之前,為了推進.NET,微軟開展了一場聲勢浩大的DotNETination(.NET化)的運動,幾乎所有傳統(tǒng)的、創(chuàng)新的、虛構(gòu)的產(chǎn)品統(tǒng)統(tǒng)打上了“.NET”標(biāo)簽,最典型的莫過于2000年底推出的.NET Enterprise Server,本質(zhì)上和.NET技術(shù)毫無關(guān)系,僅僅是因為這場聲勢浩大的宣傳運動中,需要這樣的鋪墊罷了。
不可否認(rèn),微軟在當(dāng)時過分“夸大”了.NET戰(zhàn)略,加之2001年推出的Windows XP并沒有.NET的影子,于是漸漸有人懷疑微軟用心不專,是否在逐步地放棄當(dāng)初的信誓旦旦,所謂的.NET戰(zhàn)略只是水花鏡月。
2002年,一段時間的步履闌珊之后,2002年2月13號微軟正式發(fā)布了Visual Studio .NET 2002,其中包含了.NET Framework 1.0,除了引入一門全新的語言C#之外,同時提供了對于Java的支持。也有人懷疑過微軟當(dāng)時推出J#的意圖,現(xiàn)在看來不過是為了吸引更多的Java開發(fā)人員轉(zhuǎn)投.NET懷抱罷了,而不是對于Java市場的有心經(jīng)營,這個在后來的Visual Studio版本也得到了證明。
作為一個全新的開發(fā)平臺,在語言方面,C#大量借鑒了Java的語法,同時保留了VB方面的諸多便利性。作為平臺的重頭戲ASP.NET,也傳承了微軟一直以來的可視化設(shè)計風(fēng)格,允許開發(fā)人員以拖放方式開發(fā)Web應(yīng)用,對于許多人來說是極具吸引力的,于是逐步有開發(fā)人員轉(zhuǎn)投.NET懷抱。尤其是隨著Borland的沒落,越來越多的Delphi開發(fā)人員投向了.NET或者Java陣營。而在開發(fā)工具的支持上,.NET無疑是有巨大優(yōu)勢的。
可是.NET 1.0畢竟是全新的平臺,許多類庫是不成熟的。尤其是安全方面,如果反射看過當(dāng)時的.NET Framework源代碼,可以看到許多倉促的痕跡。另外也繼承Windows一直以來的毛病,在7×24運行的場景下,還是“不靠譜”了一點兒,雖然相對于COM,已經(jīng)好上許多,但依舊會出現(xiàn)一些“詭異”的場景。
2003年4月25日,曾被命名為Windows .NET Server的操作系統(tǒng)Windows Server 2003正式發(fā)布,同日發(fā)布了Visual Studio .NET 2003,并將.NET Framework的版本升級到了1.1.4322。這個四度易名的Windows操作系統(tǒng)內(nèi)置了.NET Framework 1.1,同時IIS的版本升級到了6.0。相對于當(dāng)初.NET戰(zhàn)略的喧囂,此時的微軟對于.NET已經(jīng)低調(diào)務(wù)實許多。除開發(fā)工具本身,對于微軟而言,Windows Server 2003是一個非常重要的里程碑:一方面證實了Windows操作系統(tǒng)在企業(yè)級應(yīng)用的能力,一方面.NET終于完成了和Windows操作系統(tǒng)的無縫集成,也真正意義上為開發(fā)人員提供了一套完整的.NET解決方案。
在這個版本的.NET Framework中,修正了大量1.0的Bug,性能和穩(wěn)定性也得到了比較大的提高,與此同時引入了手機應(yīng)用開發(fā),包含了.NET Compact Framework。不管開發(fā)桌面應(yīng)用,還是Web應(yīng)用,或者是手機設(shè)備的應(yīng)用,Visual Studio .NET提供了統(tǒng)一的開發(fā)語言和開發(fā)界面,使得開發(fā)人員能夠在不同應(yīng)用開發(fā)中自由切換。
隨著.NET Framework的穩(wěn)定,微軟內(nèi)部越來越多的產(chǎn)品采用.NET重新開發(fā),或者提供了和.NET的無縫對接,這個也就是微軟一直強調(diào)的“Connected”。所有的軟件和產(chǎn)品都是可以互聯(lián)的,其中莫過于2003年發(fā)布的Exchange 2003、Office 2003以及2004年發(fā)布的Biztalk Server 2004,允許開發(fā)人員使用.NET開發(fā)應(yīng)用,并且做到了無縫集成。
在2003年拉斯維加斯的微軟開發(fā)者大會上,微軟首次展示了開發(fā)代號為“Whidbey”的下一代開發(fā)工具。與此同時展示了開發(fā)代號為“Yukon”的下一代數(shù)據(jù)庫服務(wù)器,也就是后來的SQL Server 2005。令人驚艷的遠(yuǎn)不止這些,還有開發(fā)代號為“Longhorn”的下一代操作系統(tǒng),在這個全新的操作系統(tǒng)中,包含非常重要的幾個組件:
Avalon:圖形渲染引擎,全新的XML定義語言XAML,使其可以用類似HTML的文本語言來定義界面,并提供了華麗的界面效果。
Indigo:通信子系統(tǒng),這是微軟為了解決異構(gòu)通信協(xié)議而設(shè)計的,旨在希望通過它幫助開發(fā)人員以不同的方式提供服務(wù)和通信。
WinFS:文件子系統(tǒng),現(xiàn)在看來,這是微軟一個美麗的謊言,也是微軟對于文件系統(tǒng)偉大的夢想。據(jù)說關(guān)于WinFS的概念設(shè)計早在2000年就被提出來,并希望應(yīng)用于新一代的SQL Server。2003年雖然實現(xiàn)了技術(shù)原型,但終究因為無法克服的性能問題,微軟不得不將計劃擱淺。
與此同時,微軟承諾提供一個.NET編程接口,叫著WinFX。可也正是從這次大會開始,微軟不斷跳票成了一種習(xí)慣。就如前面提到的,2004年之前微軟發(fā)布的大多產(chǎn)品,都是部分甚至全部采用.NET重寫,至少提供了開發(fā)方面的無縫支持,也就意味著開發(fā)人員可以使用C#或者VB.NET在微軟平臺上開發(fā)所有的應(yīng)用。這里又不得不提Longhorn了,這個“長角”的犀牛似乎有些吹牛不用本錢,一次又一次地跳票,發(fā)布日始終無期,有消息說Longhorn考慮過全部用.NET重寫,但這顯然是瘋狂、不切實際的想法。畢竟Windows的歷史包袱太過沉重,另外在沒有硬件支持的情況下,CLR運行效率在針對系統(tǒng)級方面的開發(fā)是否有性能問題還是要打個問號。
2005年,一切風(fēng)調(diào)雨順,兩年前PDC大會給眾多開發(fā)人員吊足了胃口的Whidbey和Yukon,終于在2005年11月7號姍姍來遲。一直以.NET命名的Visual Studio換成了Visual Studio 2005,同時將.NET Framework的版本升級到2.0,在CLR底層引入了泛型,同時為了方便開發(fā)人員,內(nèi)置了一個用于開發(fā)調(diào)試的Web服務(wù)器,使得開發(fā)人員在開發(fā)過程可以更加方便地測試與部署。一般來說微軟的產(chǎn)品到第三個版本才會穩(wěn)定下來,.NET Framework也逃不過這個宿命。CLR并不是簡單的類庫方面的升級,而是全新的CLR,相對于1.1版本,運行效率和穩(wěn)定性都有了大幅度的提高。
在開發(fā)方面,微軟第一次兜售自己的軟件開發(fā)方法學(xué),Visual Studio為開發(fā)人員提供了全套的解決方案,使開發(fā)人員可以在不離開IDE的情況下完成團隊協(xié)作。而在類庫方面,引入了Web Parts、Membership、Master Pages、Theme等多個能夠加快Web應(yīng)用開發(fā)的技術(shù)。只是在這點,微軟犯了一個不大不小的錯誤。一直以來微軟開發(fā)工具的設(shè)計原則是“拖放操作”,而ASP.NET 2.0的許多技術(shù)也正是契合這樣的設(shè)計思想,只是微軟依舊按照桌面開發(fā)的設(shè)計思路去引導(dǎo)Web開發(fā)。世界已經(jīng)改變,在瀏覽器市場,由于微軟多年的不思進取,F(xiàn)irefox被逐漸接受,同時隨著Web 2.0崛起,越來越多的網(wǎng)站設(shè)計師傾向于更加簡潔的界面和更加豐富的用戶體驗,于是DIV+CSS和Ajax變得越來越流行。不管Web Parts也好,Membership也罷,雖然可以通過拖放很簡單地完成一個業(yè)務(wù)功能,但是過于冗余的HTML生成加上自身模型的復(fù)雜,除了一些對性能和用戶體驗要求不是很高的站點,在Web開發(fā)上,開發(fā)人員更加愿意堅持手寫HTML和使用簡單的“控件綁定”。因為他們深信唯有如此,方可寫出符合Web 2.0風(fēng)格的Web應(yīng)用,而Visual Studio 2005能夠幫上的并不多,加上第一次集成了Visual Studio,開發(fā)工具的性能并沒有得到很好的解決。不管如何,這是一個成功的Visual Studio版本。
同日發(fā)布的SQL Server 2005完全架構(gòu)在.NET之上,并允許開發(fā)人員使用.NET編寫存儲過程和函數(shù),并且因此了XML的數(shù)據(jù)類型,同時支持.NET編寫的用戶自定義類型(UDT),在這個版本的數(shù)據(jù)庫上,.NET從之前的“Connected”變成了“Embed”。同時SQL Server 2005引入了激動人心的SOAP支持,這就意味著可以直接將數(shù)據(jù)庫暴露成Web服務(wù),從而提供給應(yīng)用系統(tǒng)直接訪問,為了方便開發(fā)人員進一步基于SQL Server進行開發(fā)和管理,SQL Server 2005引入了全新的管理界面——SQL Server Management Studio,并且和Visual Studio 2005的界面一致。
2006年,Longhorn操作系統(tǒng)的一次又一次跳票,幾乎讓所有人都失去了耐心,為了撫平抱怨不斷的開發(fā)者社區(qū),也是為了挽回些顏面,微軟將WPF(圖形渲染)、WCF(通信)、WF(工作流)和Windows Cardspace整合成代號為“WinFX”的.NET Framework 3.0,并于2006年11月6日發(fā)布。不過此WinFX并不是三年前提到的WinFX。不管如何,從某種程度來說,微軟在三年前的開發(fā)者大會的承諾總算兌現(xiàn)了一部分,3.0并不是一個全新的.NET Framework,而是2.0的補充,之前提到過2.0在CLR層面脫胎換骨,但是在基礎(chǔ)類庫上依舊比較薄弱,隨同2.0發(fā)布的許多新類庫華而不實,并無法對開發(fā)者社區(qū)產(chǎn)生重大影響。而3.0的發(fā)布是對2.0框架的一個重要補充,它彌補了微軟在企業(yè)級開發(fā)的軟肋。
同年Biztalk Server 2006發(fā)布,如同SQL Server 2005的做法,這是一個完全用.NET編寫的企業(yè)級平臺,也是完全支持.NET的開發(fā)平臺。
2007年1月30日,在一次又一次的跳票之后,微軟終于全球發(fā)布了全新的操作系統(tǒng)——Windows Vista,或許是因為等待了太久,所以期望很高,失望也就更大。我想更多的是因為不斷跳票,包括之前的過度許諾,加上對于硬件要求苛刻和驅(qū)動的不兼容,從上市的第一天開始Vista就惡評如潮。這個全新的操作系統(tǒng)理所當(dāng)然地沒有全部用.NET編寫,因為這本就是天方夜譚。因為諸多的原因,大多企業(yè)并沒有選擇從XP遷移到Vista,而是持續(xù)觀望,等待下一個版本的Windows。本希望如Windows XP那般成功的Vista注定是一個過渡的操作系統(tǒng)。
2007年11月19號,時隔.NET 3.0發(fā)布一年之后,微軟發(fā)布了Visual Studio 2008,隨同發(fā)布了.NET Framework 3.5。雖然在CLR上沒有改變,依舊是作為2.0的一個擴展,但是在編程模型上,有了重大突破。如果說.NET之前都是處在追趕和模仿其他平臺的階段,那么3.5將是一個華麗轉(zhuǎn)身,Linq和XLinq為開發(fā)人員帶來了激動人心的編程體驗。開發(fā)人員可以混合對象與數(shù)據(jù),然后用同樣的查詢方式進行數(shù)據(jù)處理,更重要的是允許開發(fā)人員在任意環(huán)節(jié)進行擴展,許多Web 2.0網(wǎng)站或者開源框架都提供了Linq for XXX的Provider,從而幫助開發(fā)人員以一致的方式進行數(shù)據(jù)處理。
同年Exchange 2007和Office 2007發(fā)布,在企業(yè)級辦公領(lǐng)域,微軟擁有越來越強的競爭力,貫徹微軟一致以來的作風(fēng),.NET編程在服務(wù)器端和客戶端都得到了淋漓盡致的支持。
2008年2月,Windows Server 2008發(fā)布,隨同一起的有IIS 7.0。之前的IIS訪問.NET,都通過ASPNET_isapi來轉(zhuǎn)發(fā)的,也就是說并不是IIS天然支持ASP.NET,而直到IIS 7.0全新引入的管道模型,.NET終于成為Windows操作系統(tǒng)密不可分的一部分。
同年8月6號發(fā)布的SQL Server 2008,配套Windows Server 2008和Visual Studio 2008,立足于.NET技術(shù),構(gòu)成了完整的Windows應(yīng)用解決方案。八年時間,從一個模糊不清的概念到如今的無處不在,這家全球最偉大的軟件公司一直以來不遺余力地推進它的.NET戰(zhàn)略。
翹動未來的可能
經(jīng)過近十年的耕耘,微軟創(chuàng)造了一個全新的軟件開發(fā)平臺,其中有浮躁、挫折,更有銳意進取。當(dāng)年的小伙子Scott早就掌管了微軟的開發(fā)工具事業(yè)部,或許他個人的成長歷程猶如.NET的成長,喧囂之后,云煙散盡,當(dāng)年的.NET夢想已經(jīng)照進現(xiàn)實,可是否如微軟當(dāng)初預(yù)期的成功,外界很難明了。
不過有一點可以肯定,微軟通過.NET戰(zhàn)略改變了軟件開發(fā)格局,同樣也改變了微軟。這家以封閉保守著稱的公司,一直以來對開源世界嗤之以鼻,這個狀況從2005年之后逐步改觀,畢竟開放的微軟遠(yuǎn)比固執(zhí)的微軟更受歡迎。2006年5月啟動的codeplex.com,是一個微軟擁抱開放的重要標(biāo)志。除了社區(qū)上的開源代碼,微軟也逐步地將一些內(nèi)部的產(chǎn)品開源,著名的莫過于Enterprise Library和ASP.NET MVC,與此同時越來越多的開發(fā)經(jīng)理和產(chǎn)品經(jīng)理開始通過Blog和世界保持溝通。
臨即發(fā)布的Visual Studio 2010,也帶給了我們更多的期待,能夠堅持十年去做一個事情已經(jīng)很難得,未來的路很長,對于微軟如此,對于開源世界亦如此。而對于我們每一個人,我想用《程序員》雜志的“技術(shù)改變世界,創(chuàng)新驅(qū)動中國”來作最后的總結(jié)。
有夢想,就有可能。
作者簡介:
劉如鴻,擅長大型系統(tǒng)的架構(gòu)與互聯(lián)網(wǎng)產(chǎn)品設(shè)計,目前為支付寶上海研發(fā)中心架構(gòu)師,專注于系統(tǒng)架構(gòu)設(shè)計。
(本文來自《程序員》雜志10年04期)
NET技術(shù):夢想創(chuàng)造可能——盤點微軟 .NET 技術(shù)八年發(fā)展歷程,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。