**1,.NET 經歷14年,在Windows平臺上的表現已經至關優秀,編程
**可是「跨平臺、開源」倒是其痛點,從16年開始.NET Core的出現將迎來.NET的真正意義上的跨平臺和開源序幕。windows
.NET Core是一個開源通用的開發框架,支持跨平臺,即支持在Window,macOS,Linux等系統上的開發和部署,而且能夠在硬件設備,雲服務,和嵌入式/物聯網方案中進行使用。bash
.NET Core的源碼放在GitHub上,由微軟官方和社區共同支持。app
下面瞭解一下.NET Framework和.NET Core這兩個分支的異同。框架
2,NET Framework和.NET Core的結構體系 編程語言
a.NET Framework 包含,Windows Form,WPF,ASP.NET工具
b.NET Core 包含,UWP,ASP.NET Core性能
c.Xamarin,新的.NET還包括第三個部分,即XAMARIN用於構建移動APP,包含iOS、 OS X 、Android等。命令行
即所謂的.NET三架馬車,下面是最新的.NET生態體系圖:設計
從上圖能夠看出,.NET Framework和.NET Core及XAMARIN將是如今及將來.NET的三大部分,而它們三個都是獨立於各自的,但都基於.NET標準庫。
3,NET Framework和.NET Core特色
.NET Core較以前的.NET Framework 從性能和開發效率上都有很大的提高。關鍵是首次實現了.NET的徹底跨平臺能力的基礎技術棧。
.NET Core 基於跨平臺能力,並無將與 GUI 高度相關的 API 移植到 .NET Core 內,所以像是 Windows Forms 或是 Windows Presentation Foundation (WPF) 並未移植到 .NET Core。
.NET Core 支持控制檯應用程序 (Console Application) 以及類庫 (Class Library) 類型的項目。
不過微軟在其 Universal Windows Platform (UWP) 開發平臺使用了 .NET Core,而且利用 .NET Native 技術將其性能提高至十分接近原生碼的速度。
ASP.NET Core 則以控制檯應用程序驅動其託管環境 Kestrel Server 以支持 ASP.NET Core 程序的運行。
a..NET Framework
(1)Windows應用程序的王者框架:.NET Framework用於建立基於Windows系統的應用程序,包括Windows From、WPF、ASP.NET MVC等。在Windows框架下的開發。.NET Framework還是強項,從此一段時間將繼續更新升級。
(2)開發語言選擇:可選用C#,VB.NET,F#等衆多語言開發。
b..NET Core
(1)跨平臺 .NET Core 是微軟推出的最新的跨平臺的框架,用它能夠建立的應用能夠運行在MAC,Linux上 。 .NET Core 支持UWP 和 ASP.NET Core,UWP即Windows 10 中的Universal Windows Platform簡稱。即Windows通用應用平臺,在Win 10 Mobile/Surface(Windows平板電腦)/PC/Xbox/HoloLens等平臺上運行,uwp不一樣於傳統pc上的exe應用也跟只適用於手機端的app有本質區別。它並非爲某一個終端而設計,而是能夠在全部windows10設備上運行。
(2)開源 .NET Core從屬於.NET基金會,由微軟進行官方支持。使用MIT和Apache 2開源協議,文檔協議遵循CC-BY
(3) 兼容性:從前面的圖上看出.NET Core和.NET Framework基於.NET Standard Library。所以與.NET Framework,Xamarin,Mono等兼容。
(4)靈活部署機制:第一種.Portable applications(便攜式應用)這種部署機制和傳統的.NET Framework類似,只要目標平臺上存在.NET Core Runtime便可。
第二種.Self-contained application(自宿主應用)顧名思義,這種部署機制將應用和運行時共同打包,即使目標平臺上沒有安裝.NET Core Runtime也能正常使用第二種方式和.NET Native也是不同的,仍然使用 CoreCLR,而.NET Native使用CoreRT做爲運行時,詳細信息請見dotnet/corert
(5)命令行工具:.NET程序全部的運行腳本均可以用命令行工具執行(cmd,bash)。
(6)語言選擇:.NET Core 1.0版本中支持的編程語言僅有C#(F#和VB暫未實現)