簡析.NET Core 以及與 .NET Framework的關(guān)系


至2002微軟公司推出.NET平臺已近15年,在互聯(lián)網(wǎng)快速迭代的浪潮中,許多語言已被淘汰,同時也有更多新的語言涌現(xiàn),但 .Net 依然堅挺的站在系統(tǒng)開發(fā)平臺的一線陣營中,并且隨著.NET Core 即將到來(2016年6月27日)的正式版,勢必迎來新一輪春天。

一 .NET 的 Framework 們

要理解.NET Core就有必要了解之前的.NET平臺的眾多Framework們。2002年微軟公司發(fā)布的第一個.NET框架————.NET Framework,不久后又發(fā)布了.NET Compact Framework 用于在較小的移動設(shè)備(Windows mobile),而.NET Compact Framework 也含有一套 類似.NET Framework 體系(Runtime, Framework,Application Model),它是一個復(fù)制精簡版的 .NET Framework。在數(shù)年間微軟樂此不疲的推出了數(shù)個類似 .NET Framework的框架,以用于在不同的設(shè)備和平臺上運行。每個Framework都有類似的體系但又不完全相同的,這樣Framework越來越多,對開發(fā)者來說不一樣的設(shè)備即便功能相同也需要維護多套代碼,增加了開發(fā)的復(fù)雜度。

.net 的框架

二 .NET Core的到來

微軟對這些問題的重新思考和改進讓.NET Core橫空出世。
.NET Core是一個開源的模塊化的Framework,不管是開發(fā)web或移動設(shè)備都在同一個Framework(.NET Core)下運行,而且 .NET Core也可在不同的操作系統(tǒng)上運行,包括Windows、linux、MacOS,實現(xiàn)了跨平臺跨設(shè)備。
更棒的是.NET Core 在發(fā)布程序時不用事先安裝Framework而是通過Nuget下載,這樣在初次部署時就不用安裝一個復(fù)雜而龐大Framework,而是按需下載。這種基于Nuget的按需加載鑄就了.NET Core 跨平臺。

core

.NET Core 構(gòu)成體系如下:

1. Runtime

在.NET Core 中有實現(xiàn)兩種RunTime,NativeRuntime 和 CoreCLR。NativeRuntime 將C# 或 VB.net 代碼直接轉(zhuǎn)換為原生機器碼。而CoreCLR是一個開源的JIT運行時,會將代碼編譯成中間語言(IL)在最終運行時再轉(zhuǎn)換機器碼。

2. Unified BCL

Base Classlibrary即基礎(chǔ)類,例如 FileSystem、Console、XML操作等。

3. Windows Store AppModel & ASP.NET Core 1.0

提供開發(fā)Windows系統(tǒng)的各種觸屏設(shè)備和ASP.NET程序的一組基礎(chǔ)庫。

三 .NET Core 與 .NET 其他Framework的關(guān)系

圖譜
version

1 .NET Core & .NET Framework

.NET Core & .NET Framework 都是 NET Standard Library 的實現(xiàn),一種是跨平臺,而另一種是Windows下特有的,除實現(xiàn)NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的實現(xiàn)。.NET Standard Library 是跨操作系統(tǒng)的關(guān)鍵所在,它定義了一組接口,而每個操作系統(tǒng)有各自的實現(xiàn),.NET Core通過nuget可以動態(tài)下載當前操作系統(tǒng)的實現(xiàn),從而實現(xiàn)跨操作系統(tǒng)(暨跨操作系統(tǒng)共享代碼)。

.NET Core 更依賴于Nuget,允許本地application在部署時動態(tài)下載需要的class library。而.NET Framework需要在系統(tǒng)中預(yù)裝。這樣.NET Core的部署比.NET Framework 更簡單快速同樣也更輕便。

2 .NET Core & ASP.NET

ASP.NET

從上圖可以看到 ASP.NET Core 有兩種形態(tài)的存在:

ASP.NET Core Web Application(.NET Core)

依賴于.NET Core的ASP.NET 只可以調(diào)用.NET Core的API,可以在多個操作系統(tǒng)上運行。(可見下圖下半部分的Reference Manager,在assemblies中沒有.NET Framework 中的庫)

ASP.NET Core Web Application(.NET Framework)

依賴于.NET Core & .NET Framework 的ASP.NET 可以調(diào)用.NET Core&.NET Framework的API ,只可以在Windows下運行。(可見下圖上半部分的Reference Manager,在assemblies中含有所有.NET Framework 中的庫)

compare

3 .NET Core & Mono

Mono是.NET Framework的開源版本的實現(xiàn),在某些特性上和.NET Core 很類似比如開源,跨操作系統(tǒng)。目前.NET CORE 會從Mono上吸取經(jīng)驗,發(fā)展壯大最終可以更好的在除Windows外的其他操作系統(tǒng)上運行。另外Mone支持的App Models要比.NET Core多(例如Windows Forms)。

總結(jié)

微軟CEO薩提亞·納德拉睿智的決定拋棄以PC為中心,擁抱各種設(shè)備和平臺,成為一家軟件服務(wù)型企業(yè)。為了達成這種愿景必須構(gòu)建新的微軟生態(tài)鏈,囊括Windows,Linux,OS X及其他操作系統(tǒng),覆蓋X86/ARM等處理器以及不同的設(shè)備(包括PC,Phone,全息眼鏡及其他)。這些足見微軟的“野心”。隨著.NET Core 正式發(fā)布大戰(zhàn)略邁出堅實的一步,6月27日讓我們拭目以待吧。


參考內(nèi)容

【1】 https://blogs.msdn.microsoft.com/dotnet/2014/12/04/introducing-net-core/

【2】 https://www.linkedin.com/pulse/too-many-net-jargons-net-what-balaje-sankar

【3】 https://blogs.msdn.microsoft.com/dotnet/2016/02/10/porting-to-net-core/

【4】 https://dotnet.github.io/docs/concepts/codesharing.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,606評論 6 533
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,582評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,540評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,028評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,801評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,223評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,294評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,442評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,976評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,800評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,996評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,543評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,233評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,662評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,926評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,702評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,991評論 2 374

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