天天看點

簡析.NET Core 以及與 .NET Framework的關系

簡析.NET Core 以及與 .NET Framework的關系

一 .NET 的 Framework 們

二 .NET Core的到來

1. Runtime

2. Unified BCL

3. Windows Store AppModel & ASP.NET Core 1.0

三 .NET Core 與 .NET 其他平台的關系

1 .NET Core & .NET Framework

2 .NET Core & ASP.NET

3 .NET Core & Mono

總結

至2002微軟公司推出.NET平台已近15年,在網際網路快速疊代的浪潮中,許多語言已被淘汰,同時也有更多新的語言湧現,但 .Net 依然堅挺的站在系統開發平台的一線陣營中,并且随着.NET Core 即将到來(2016年6月27日)的正式版,勢必迎來新一輪春天。

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

微軟對這些問題的重新思考和改進讓.NET Core橫空出世。

.NET Core是一個開源的子產品化的Framework,不管是開發web或移動裝置都在同一個Framework(.NET Core)下運作,而且 .NET Core也可在不同的作業系統上運作,包括Windows、linux、MacOS,實作了跨平台跨裝置。

更棒的是.NET Core 在釋出程式時不用事先安裝Framework而是通過Nuget下載下傳,這樣在初次部署時就不用安裝一個複雜而龐大Framework,而是按需下載下傳。這種基于Nuget的按需加載鑄就了.NET Core 跨平台。

.NET Core 構成體系如下:

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

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

提供開發Windows系統的各種觸屏裝置和ASP.NET程式的一組基礎庫。

.NET Core & .NET Framework 都是 NET Standard Library 的實作,一種是跨平台,而另一種是Windows下特有的,除實作NET Standard Library外 .NET Core 和 .NET Framework 都有各自特有的實作。.NET Standard Library 是跨作業系統的關鍵所在,它定義了一組接口,而每個作業系統有各自的實作,.NET Core通過nuget可以動态下載下傳目前作業系統的實作,進而實作跨作業系統(暨跨作業系統共享代碼)。

.NET Core 更依賴于Nuget,允許本地application在部署時動态下載下傳需要的class library。而.NET Framework需要在系統中預裝。這樣.NET Core的部署比.NET Framework 更簡單快速同樣也更輕便。

從上圖可以看到 ASP.NET Core 有兩種形态的存在:

ASP.NET Core Web Application(.NET Core)

依賴于.NET Core的ASP.NET 隻可以調用.NET Core的API,可以在多個作業系統上運作。<code>(可見下圖下半部分的Reference Manager,在assemblies中沒有.NET Framework 中的庫)</code>

ASP.NET Core Web Application(.NET Framework)

依賴于.NET Core &amp; .NET Framework 的ASP.NET 可以調用.NET Core&amp;.NET Framework的API ,隻可以在Windows下運作。<code>(可見下圖上半部分的Reference Manager,在assemblies中含有所有.NET Framework 中的庫)</code>

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

繼續閱讀