這些年讓人“眼花繚亂”的.NET

最近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ǔ)言棚赔。

編譯過(guò)程


從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 Core發(fā)展時(shí)間軸


.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 5.0框架

最后

.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秘症。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末照卦,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子乡摹,更是在濱河造成了極大的恐慌役耕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聪廉,死亡現(xiàn)場(chǎng)離奇詭異瞬痘,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)板熊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)框全,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人干签,你說(shuō)我怎么就攤上這事津辩。” “怎么了容劳?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵喘沿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我竭贩,道長(zhǎng)蚜印,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任娶视,我火速辦了婚禮晒哄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘肪获。我一直安慰自己寝凌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布孝赫。 她就那樣靜靜地躺著较木,像睡著了一般。 火紅的嫁衣襯著肌膚如雪青柄。 梳的紋絲不亂的頭發(fā)上伐债,一...
    開(kāi)封第一講書(shū)人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音致开,去河邊找鬼峰锁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛双戳,可吹牛的內(nèi)容都是我干的虹蒋。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼飒货,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼魄衅!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起塘辅,我...
    開(kāi)封第一講書(shū)人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤晃虫,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后扣墩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體哲银,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年沮榜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盘榨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蟆融,死狀恐怖草巡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情型酥,我是刑警寧澤山憨,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站弥喉,受9級(jí)特大地震影響郁竟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜由境,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一棚亩、第九天 我趴在偏房一處隱蔽的房頂上張望蓖议。 院中可真熱鬧,春花似錦讥蟆、人聲如沸勒虾。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)修然。三九已至,卻和暖如春质况,著一層夾襖步出監(jiān)牢的瞬間愕宋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工结榄, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留中贝,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓臼朗,卻偏偏與公主長(zhǎng)得像雄妥,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子依溯,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容