最近IT屆有個(gè)的熱門(mén)事件科吭,就是Python之父Guido van Rossum因?yàn)橥诵萆钐珶o(wú)聊加盟微軟搞開(kāi)源。大佬果然還是閑不下來(lái)啊猴鲫,我們向大佬“龜叔”致敬砌溺。
再看下面網(wǎng)友的評(píng)論,是不是對(duì)在Excel中使用Python有所期待变隔?
說(shuō)到微軟规伐,為了和Java抗衡,這幾年微軟的.NET的發(fā)展可謂是日新月異匣缘。最近猖闪,微軟也發(fā)布了.Net的一個(gè)非常重要的版本.Net 5.0鲜棠。
那么,.Net是什么培慌?C#VB.Net和它又有什么關(guān)系豁陆?什么是.Net Framework? 后來(lái)微軟又開(kāi)源一個(gè).Net Core,這又是什么鬼吵护?帶著這些問(wèn)題和大家一起學(xué)習(xí)和梳理下微軟這些年的.Net發(fā)展盒音。
COM
我們先從COM(Componet Object Model)說(shuō)起,在現(xiàn)在看來(lái)它算是一個(gè)古老的技術(shù)了馅而,在《COM 原理與實(shí)現(xiàn)》一書(shū)中提到:
COM即組件對(duì)象模型祥诽,是一種以組件為發(fā)布單元的對(duì)象模型,這種模型使各軟件組件可以用統(tǒng)一的方式進(jìn)行交互瓮恭。COM既提供了組件之間進(jìn)行交互的規(guī)范雄坪,也提供了實(shí)現(xiàn)交互的環(huán)境,因?yàn)榻M件對(duì)象之間交互的規(guī)范不依賴(lài)任何特定的語(yǔ)言屯蹦,所以COM也可以是不同語(yǔ)言協(xié)助開(kāi)發(fā)的標(biāo)準(zhǔn)维哈。
COM通過(guò)這個(gè)接口規(guī)范,實(shí)現(xiàn)不同語(yǔ)言可以通過(guò)這個(gè)接口規(guī)范互相調(diào)用登澜。假如我們用C++開(kāi)發(fā)的代碼要在VB中調(diào)用阔挠,或者VB開(kāi)發(fā)的代碼需要在C++中調(diào)用,這時(shí)我們就可以通過(guò)COM制作DLL動(dòng)態(tài)庫(kù)脑蠕,通過(guò)接口可以調(diào)用其他語(yǔ)言DLL動(dòng)態(tài)庫(kù)里的程序谒亦。隨著計(jì)算機(jī)技術(shù)的發(fā)展,COM明顯不怎么活躍了空郊,但是它的出現(xiàn)解決了不通語(yǔ)言之間不能互通的問(wèn)題,在那個(gè)年代也算是一個(gè)偉大的技術(shù)切揭。
在2002年狞甚,微軟發(fā)布了.NET Framework,COM的時(shí)代宣告終結(jié)廓旬。
.NET Framework
.NET Framework是一個(gè)全新軟件開(kāi)發(fā)框架哼审,一個(gè)用于軟件集成的開(kāi)發(fā)平臺(tái),它提供了兩個(gè)非常核心的集成技術(shù)孕豹,一個(gè)是用于集成操作系統(tǒng)軟件的公共語(yǔ)言運(yùn)行庫(kù)CLR(Common Language Runtime)涩盾。CLR為程序的執(zhí)行提供一個(gè)托管(Managed)的執(zhí)行環(huán)境,它是.NET Framework的執(zhí)行引擎励背,為托管程序的執(zhí)行提供內(nèi)存分配春霍、垃圾回收、安全控制叶眉、異常處理和多線程管理等服務(wù)址儒。另一個(gè)是用于集成Internet范圍的XML Web Service芹枷,XML Web Service是以XML消息作為數(shù)據(jù)的基本通訊方式,遵循其他Internet的標(biāo)準(zhǔn)莲趣,實(shí)現(xiàn)了在不同模塊鸳慈,不同設(shè)備之間的服務(wù)或應(yīng)用互相操作,開(kāi)啟了分布式開(kāi)發(fā)的新的方向喧伞。
在.Net Framework發(fā)布時(shí)也誕生了一種新的高級(jí)面向?qū)ο笳Z(yǔ)言C#走芋,不過(guò),那個(gè)時(shí)候VB還是一個(gè)非常流行的開(kāi)發(fā)語(yǔ)言潘鲫,有大量的開(kāi)發(fā)人員使用VB翁逞。微軟為了推廣自己的平臺(tái),不僅讓熟悉C系列的開(kāi)發(fā)人員適應(yīng)和快速上手次舌,同時(shí)也把VB加入了這個(gè)框架中熄攘,讓熟悉VB的人也能輕松的在這個(gè)平臺(tái)上開(kāi)發(fā)。因此彼念,.NET Framework是多種語(yǔ)言支持的挪圾,比如:C#,VB,JScript逐沙,J#等哲思。但是不管是什么語(yǔ)言的源程序經(jīng)過(guò)相應(yīng)的編譯器之后都會(huì)生成統(tǒng)一的中間代碼,我們叫做公共中間語(yǔ)言(Common Interneduate Language)吩案,最后再生成機(jī)器語(yǔ)言棚赔。
從2002年發(fā)布第一個(gè)版本,之后便馬不停蹄的進(jìn)行了很多次的版本更新和升級(jí)徘郭,每次快速的迭代更新都有著豐富的內(nèi)容變化靠益。2005年發(fā)布了2.0版本,引入了泛型残揉,并增加了大量的類(lèi)型胧后。2006年發(fā)布了3.0版本,增加了WF抱环、WCF壳快、WPF這三大關(guān)鍵技術(shù)。2007年發(fā)布了3.5版本镇草,這個(gè)版本有個(gè)非常重要的更新眶痰,支持了LINQ。2010年發(fā)布的4.0梯啤,為了適應(yīng)新的應(yīng)用和開(kāi)發(fā)場(chǎng)景竖伯,加入了動(dòng)態(tài)編程、并行計(jì)算、默認(rèn)參數(shù)黔夭、協(xié)變和逆變等宏胯。2012年發(fā)布了4.5版本,這個(gè)版本包括任務(wù)的異步和等待本姥,Zip壓縮肩袍,正則表達(dá)式超時(shí),優(yōu)化配置文件提高啟動(dòng)性能婚惫,垃圾回收等五大特色功能氛赐。還有后面發(fā)布的4.6,4.7等高版本先舷。
2016年艰管,微軟的.Net Core發(fā)布,從此蒋川,微軟也走上了開(kāi)源之路牲芋。
MONO
說(shuō)起微軟的.NET的開(kāi)源進(jìn)程,不可不提到Mono這個(gè)開(kāi)源項(xiàng)目捺球。在.NET誕生之初缸浦,只是考慮到將.NET跨語(yǔ)言,并沒(méi)有考慮到將其跨平臺(tái)化氮兵。畢竟裂逐,對(duì)于微軟來(lái)說(shuō),自己本人擁有普及率極高的操作系統(tǒng)泣栈,也不希望為自己競(jìng)爭(zhēng)對(duì)手的操作系統(tǒng)(Linux卜高,MacOS等)做支持。在微軟推出.NET之后南片,Ximian公司對(duì).NET產(chǎn)生了濃厚的興趣掺涛,于是主持并發(fā)起了Mono項(xiàng)目,將.NET在Linux上基于開(kāi)放標(biāo)準(zhǔn)公共語(yǔ)言基礎(chǔ)架構(gòu)CLI-ECMA-335疼进,實(shí)現(xiàn)了編譯器和通用語(yǔ)言架構(gòu)等一整套開(kāi)發(fā)工具薪缆。我們?cè)贛ono的官網(wǎng)上可以發(fā)現(xiàn)下面這句話:
Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.
但是,Mono的發(fā)展一直處于不溫不火的狀態(tài)颠悬,雖然Ximian被Novell收購(gòu),但是一直在微軟和SUN的夾縫之中生存定血。最后赔癌,在2016年,Ximian公司還是被微軟收購(gòu)了澜沟,將其整合到自己的系統(tǒng)框架中灾票,并提供端到端和跨平臺(tái)開(kāi)發(fā)、測(cè)試以及交付等流程茫虽。
.NET Core
雖然.NET Core也是微軟推出的.NET平臺(tái)刊苍,它最初的目的并不是.NET Framework替代品既们,它們是微軟兩個(gè)不同的產(chǎn)品線。.NET Core是微軟專(zhuān)門(mén)為了跨平臺(tái)而推出的開(kāi)源.NET平臺(tái)正什,它可以在Windows啥纸、MacOS和Linux操作系統(tǒng)上運(yùn)行,支持C#婴氮、VB.NET或F#等語(yǔ)言斯棒,可以開(kāi)發(fā)Web,桌面主经,移動(dòng)荣暮,云,游戲罩驻,物聯(lián)網(wǎng)等應(yīng)用程序穗酥。它和.NET Framework一樣基于同樣的標(biāo)準(zhǔn)基礎(chǔ)庫(kù),實(shí)際上就是.NET Standard惠遏,微軟發(fā)布了這么多.NET平臺(tái)框架砾跃,為了保證系統(tǒng)的一致性,從而推出一個(gè)底層的標(biāo)準(zhǔn)庫(kù)(NET Standard Library)爽哎。.NET Core和.NET Framework都在這套標(biāo)準(zhǔn)上實(shí)現(xiàn)自己的類(lèi)庫(kù)蜓席。
對(duì)于,最近發(fā)布的.NET 5.0就是.NET Core的升級(jí)课锌,微軟從3.1直接跳過(guò)了4.x版本厨内,微軟認(rèn)為它將是最好的.NET平臺(tái),并簡(jiǎn)化了它的名稱(chēng)渺贤,它是未來(lái)發(fā)展方向雏胃,當(dāng)然,你也可以叫繼續(xù)它.NET Core志鞍。
.NET 5.0會(huì)有更加出色的性能瞭亮,將.NET Framework、Mono固棚、.NET Core统翩、.NET standard統(tǒng)一起來(lái),形成一個(gè)通用的平臺(tái),可以開(kāi)發(fā)桌面應(yīng)用程序此洲、云端服務(wù)厂汗、網(wǎng)站、跨平臺(tái)移動(dòng)應(yīng)用程序呜师、游戲娶桦、物聯(lián)網(wǎng)以及AI人工智能等。
最后
.NET的發(fā)展之路其實(shí)并不好走,尤其是java壟斷了大部分市場(chǎng)多年衷畦,其地位是很難撼動(dòng)的栗涂。就拿國(guó)內(nèi)來(lái)說(shuō),幾個(gè)大廠普遍采用Java作為主流開(kāi)發(fā)語(yǔ)言祈争,而且其項(xiàng)目框架也比較成熟斤程,再切換成.NET平臺(tái)也是不切實(shí)際的。不過(guò)铛嘱,對(duì)于.NET Core這個(gè)輕量級(jí)的平臺(tái)來(lái)說(shuō)暖释,確實(shí)也有著比較不錯(cuò)的性能和開(kāi)發(fā)效率。這一點(diǎn)相信會(huì)受到廣大工程師的喜歡墨吓,平時(shí)球匕,拿它做個(gè)小程序或者demo也是個(gè)不錯(cuò)的選擇。好用又免費(fèi)誰(shuí)不愛(ài)呢帖烘,還是希望.NET越走越遠(yuǎn)吧亮曹。
本文首發(fā)公眾號(hào):Will的大食堂,轉(zhuǎn)載請(qǐng)聯(lián)系微信:yuzaiduzhong秘症。