3
本文作者: 井三胖 | 2014-11-19 10:36 |
2014年11月13日,微軟表示開源.NET,包含整個(gè).NET服務(wù)器端的核心類別,ASP.NET 5.0、.NET Common Language Runtime(CLR)、Just-In-Time Compiler、Garbage Collector以及Base Class Libraries等,都在開源的范疇之中。
消息一出,霎時(shí)在全世界開發(fā)者的圈子內(nèi)炸開了鍋。巨頭企業(yè)這次不光是口頭喊出“擁抱開源”的口號(hào),踐行開源能夠看出微軟是動(dòng)真格的了。針對(duì)此事,筆者請(qǐng)教了業(yè)內(nèi)資深人士張善友老師(博客鏈接點(diǎn)擊這里)。張老師根據(jù)自己多年的開發(fā)經(jīng)驗(yàn),針對(duì)微軟開源.NET事件,表達(dá)了自己的看法。
張老師于2001年開始接觸.NET,個(gè)人很欣賞C# 語言的強(qiáng)大操作能力、優(yōu)雅的語法風(fēng)格以及創(chuàng)新的語言特性。他認(rèn)為微軟.NET的優(yōu)點(diǎn)主要有三個(gè):多語言、多平臺(tái)支持;學(xué)習(xí)成本低;擁有一流的開發(fā)工具。
然而另一方面,本身具備跨平臺(tái)基因的.NET卻因?yàn)槲④洃?zhàn)略部署,包括在底層代碼的實(shí)現(xiàn)上,都沒有做到跨平臺(tái)的支持。真正能夠?qū)崿F(xiàn)跨平臺(tái)支持的是由Novell公司發(fā)起的Mono項(xiàng)目。Mono現(xiàn)在由Xamarin在運(yùn)營,根植于.NET的技術(shù)核心,成為了其在Linux上使用的替代品。
Mono 歷經(jīng)十余年發(fā)展,已經(jīng)成長為一個(gè)龐大的生態(tài)系統(tǒng)。.NET Framework 和 Mono 的交集僅限于 CLR/編譯器/BCL 底層以及 Web 棧。.NET Framework 的上層為 Windows 和 Azure 設(shè)計(jì)。Mono 上層針對(duì) Linux, OS X 等多平臺(tái)設(shè)計(jì),不可替代的東西很多。
相比于微軟,Mono項(xiàng)目依舊有不完善的方面,開發(fā)者在使用過程中有許多不便之處。在2007年微軟僅僅是基于自己的“參考協(xié)議”公開了部分源代碼,既不能編譯成完整的函數(shù)庫使用,也實(shí)際上不允許類似的代碼使用。對(duì)于 Mono 項(xiàng)目的代碼貢獻(xiàn)者來說,這反而是個(gè)負(fù)擔(dān)。
張老師表示,為了避免出現(xiàn)可能的版權(quán)糾紛,仔細(xì)閱讀和研究過微軟代碼的人是不能夠給 Mono 捐獻(xiàn)核心代碼的。徹底的基于 OSI 認(rèn)證的 MIT 協(xié)議公開了.NET Framework 的核心代碼,并且提供了免費(fèi)的專利授權(quán),這使得 Mono 可以“拿來就用”。更好的繁榮了 .NET/Mono 這兩個(gè)龐大的生態(tài)系統(tǒng)。微軟完全開源.NET,提供了專利承諾,都將都有助于.NET得到應(yīng)用。此外,Mono團(tuán)隊(duì)可以利用微軟的開源,來解決Mono代碼庫中不完整或者存在錯(cuò)誤的地方。
張老師表示,曾經(jīng)身邊的很多人都離開.NET開發(fā)轉(zhuǎn)向Java、PHP等的開發(fā)。.NET的開源能夠吸引這些人重回.NET社區(qū),對(duì)推動(dòng)社區(qū)的發(fā)展非常有幫助。
張 老師說,在國內(nèi)經(jīng)常聽到這樣的故事,某產(chǎn)品是基于.net開發(fā)的,而政府的項(xiàng)目需要使用Linux操作系統(tǒng)。開發(fā)者不得不面對(duì)兩種選擇,第一種是將產(chǎn)品移 植到Mono平臺(tái),另一種選擇是重新組建一個(gè)Java開發(fā)團(tuán)隊(duì)將產(chǎn)品重新用Java開發(fā)一遍。這兩種選擇在國內(nèi)都有,但是可惜的是很多都選擇了重新組建一 個(gè)Java團(tuán)隊(duì),而不是將產(chǎn)品移植到Mono平臺(tái)。但隨著微軟開源.NET之后,開發(fā)者們?cè)僖膊恍枰黄茸邚澛妨?,包容開放的社區(qū)環(huán)境無疑會(huì)收獲大量人才 的回歸。
其實(shí)早在多年前微軟就通過開源asp.net mvc等項(xiàng)目支持了Mono項(xiàng)目。近年微軟開始參與Linux內(nèi)核貢獻(xiàn)并成立了開放技術(shù)子公司。在今年4月成立.NET基金會(huì),將眾多開發(fā)工具納入開源計(jì)劃之中,例如.NET編譯平臺(tái)Roslyn、ASP.NET、.NET Micro Framework等,這一系列的舉動(dòng)都是.NET開源的前奏。
微軟的市值現(xiàn)在升值為4100億美元,超過了谷歌公司位居全球第二,自身正逐漸走出PC時(shí)代的思維困局,做好準(zhǔn)備迎接即將到來的物聯(lián)網(wǎng)時(shí)代。微軟發(fā)布新的計(jì)劃,將加大對(duì).NET Micro Framework的投入力度,著力在智能設(shè)備和物聯(lián)網(wǎng)領(lǐng)域進(jìn)行深度開發(fā)。
擅長PC業(yè)務(wù)的微軟,在“云”這個(gè)平臺(tái)上,自身的技術(shù)和整體布局上并沒有落后,戰(zhàn)略眼光和實(shí)際執(zhí)行均部署到位。但是在移動(dòng)入口(手機(jī)、平板)市場(chǎng),微軟進(jìn)入的雖早,卻收效甚微。即便是收購了日漸式微的老牌巨頭諾基亞,也沒有擺脫戰(zhàn)敗的局面。所以微軟現(xiàn)在宣布開源.NET,鼓勵(lì)支持Android和IOS開發(fā),就是想在移動(dòng)入口有所作為。
開源.NET是為了落實(shí)微軟新任CEO薩提亞·納德拉倡導(dǎo)的“移動(dòng)為先,云為先”新政。張老師認(rèn)為,在現(xiàn)在的時(shí)代,存在替代選擇的情況下,開發(fā)者已經(jīng)沒有理由為操作系統(tǒng)付費(fèi)。他們可以選擇云服務(wù)。微軟此舉只是吸引更多開發(fā)者使用其Azure服務(wù)。
微軟的營收支柱軟件Windows和Office 都完成了云化,Windows 對(duì)應(yīng)Azure云平臺(tái),Office 演化成了Office 365 。微軟的戰(zhàn)略重心已經(jīng)從PC轉(zhuǎn)移到云端,.NET開源可以促使更多的開發(fā)者使用Azure云服務(wù)。
納德拉在上任后實(shí)施的一系列舉措讓微軟在潛移默化中得到改變,信奉跨平臺(tái)戰(zhàn)略,主張以開發(fā)者而不是Windows為中心重構(gòu)微軟的軟件和云基礎(chǔ)架構(gòu),搭建完善的云開發(fā)的生態(tài)系統(tǒng),無疑是對(duì)競(jìng)爭(zhēng)對(duì)手們的沉重的打擊。新政致力于將微軟的生態(tài)核心從Windows操作系統(tǒng)轉(zhuǎn)移到Azure云。.NET的開源有利于實(shí)現(xiàn)微軟新生態(tài)向Linux,iOS和Android的滲透,Visual Studio 和.NET 能夠真正走向跨平臺(tái)化。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。