本月14日,微軟發布.NET Core 2.0 正式版,它的發布意味著.NET Core平臺更加成熟,也預示其更美好的未來。本文將分析.NET Core 的特性以及未來發展方向,為開發人員選擇在何種平臺開發程序提供參考。
1.1. Net Core 2.0 特性
1.1.1. NET Core平臺是開源的
.NET Core是.NET Foundation的一部分,如下圖:
.NET Foundation是一個圍繞.NET開發框架,并不斷創新的社區。微軟的另一大進步就是使ASP.NET Core開源。由于它是一個開源平臺,您可以更好地控制使用和修改它,并且其代碼的透明度可以為您自己的基于.NET Core的項目提供信息和靈感。此外,您和您的伙伴可以更快地更正錯誤和規避安全風險,使.NET Core更安全。.NET Core更穩定,因為該平臺工具的代碼將始終保持公開。整個框架源和包可以在GitHub站點上找到。
1.1.2. 跨平臺
除了使其成為開放源碼外,微軟已經不遺余力地使其跨平臺。開發人員將能夠在Mac,Linux或Windows系統上開發應用程序。事實上,它還引入了專門為Mac和Linux用戶提供的新的代碼編輯器“Visual Studio Code”。
1.1.3. 靈活部署
.NET Core的這一功能可幫助開發人員靈活部署:作為應用程序(FDD-框架依賴部署)的一部分,或作為全新的安裝(SCD-獨立部署) 。FDD允許您使用較小的部署包最小化內存和磁盤空間的使用,而SCD則可以完全控制項目部署(包括.NET Core庫和運行時)。
1.1.4. 模塊化架構
此功能可幫助開發人員根據項目的要求僅使用必需的軟件包。模塊化架構有助于升級其跨平臺兼容性。因此,開發人員現在可以設計輕便,高效和強大的應用程序。與以前的版本相比,新版本相對更輕,更小,這有助于加快開發過程。對文件系統進行了較大改變,將有助于搭建健壯的開發環境。
1.1.5. 命令行工具
與以前的版本相比,新版本更輕,更小,這有助于提高開發效率。為了搭建健壯的開發環境,文件系統作了較大變化。可以在名為DNVM或Dot Net版本管理器的命令行訪問每個可能的產品方案。該命令行可以方便地更新和配置.NET運行時。這是.NET執行環境的補充。命令行的另一個好處就是它與平臺無關,開發人員不需要一次又一次地學習工具鏈。一旦熟悉其使用,就可以在任何其他支持的平臺或界面上使用相同的方式。
1.1.6. 云支持
ASP.NET Core 是率先開發出保持云集成的功能。因為它支持基于云的配置,所以云端初始化設置允許開發人員將其應用程序方便發布到云端。
1.2. NET Core 后續發展路線圖
1.2.1. 已知主要版本的發布時間表
版本 | 發布時間 |
---|---|
1.0 RC1 | 2016年2月15日 |
1.0 RC2 | 2016年5月16日 |
1.0 | 2016年6月27日 |
1.1 | 2016年11月16日 |
2.0 | 2017年8月14日 |
2.1 | 2017第四季度 |
1.2.2. NET Core 發展歷程
** RC1 **
2016年1月 ASP.NET 5 改名 ASP.NET Core 1.0 ,所有名字變動如下圖:
1.0 RC2
.NET Core橫跨各平臺:,也就是說所有基于.NET Core 構建的應用模型(比如:ASP.NET Core, Console Apps 和 class libraries)不僅可以運行在Windows系統之上,同時也可以運行在OS X 和 Linux系統之上。
1.0
微軟團隊提供的下載中(https://www.microsoft.com/net/download)包含了 .NET Core Runtime, .NET Core SDK, .NET Core VS Tooling (包括 Web 開發工具), .NET Core Windows Server Hosting, 以及更新的 NuGet ASP.NET Core 1.0 和 Entity Framework Core 1.0 包。微軟還發布了用于創建 .NET Core 項目的 Visual Studio 和 Visual Studio Code 擴展,以及 .NET Documentation(https://docs.microsoft.com/zh-cn/)。
1.1
.NET Core 1.1 發布,這個版本支持有效期三個月,后續有變動。
11/16 .NET Core 1.1 RTM 版發布。對應發布 ASP.NET Core 1.1 、EF Core 1.1。Visual Studio for Mac 也一同發布。可以通過Visual Studio 2015, Visual Studio 2017 RC, Visual Studio Code and Visual Studio for the Mac 創建 .NET Core 1.1 的應用。
2.0
受Visual Studio 2017 15.3 版本支持,并引進了新的 Razor Pages 用戶界面設計范例。對于ASP.NET Core來說,這個版本主要簡化了部署,提高了預加載頁面性能.人們更關注配套的.NET Core 2.0平臺帶來的變化:
- 降低入門及學習的障礙,.NET Standard 2.0通過標準化共享API,可以輕松地跨.NET Framework,.NET Core和Xamarin共享代碼。
- .NET Framework 4.6.1支持.NET Standard 2.0,.NET Standard 2.0 添加了許多.NET Framework 4.6.1 支持的API,以及.NET Standard 2.0 自己特有的API
- .NET Standard 2.0 添加了 14,994 個.NET Framework 4.6.1已經支持的API
- .NET Standard 2.0 只有 43 個 .NET Framework 4.6.1不支持的API
- .NET Standard 2.0 將是.NET Standard 1.6的超集。 換句話說,.NET Standard 2.0和1.x不會發生突破性的變化。
- .NET Framework兼容模式: 允許.NET Standard項目引用.NET Framework庫,利用.NET的歷史遺產,便于開發平臺從.NET Framework遷移到.NET Core.
最終可以理解為.NET Core 2.0 將是等價于 .NET Framework 4.6.1,同時既有的.NET Framework代碼可以很輕松的移植到.NET Core平臺
1.3. NET Core 或 .NET Framework ?
1.3.1. 概述
.NET Framework支持Windows和Web應用程序。今天,您可以使用Windows Forms,WPF和UWP在.NET Framework中構建Windows應用程序。ASP.NET MVC用于在.NET Framework中構建Web應用程序。
.NET Core是為所有操作系統(包括Windows,Mac和Linux)構建應用程序的新型開源和跨平臺框架。.NET Core支持UWP和ASP.NET Core,UWP用于構建Windows 10目標Windows和移動應用程序,ASP.NET Core用于構建基于瀏覽器的Web應用程序。通過下圖您能看到.NET Core和以前的.NET Framework的主要功能區別:
同樣的ASP.NET Core 與 傳統的 ASP.NET 也有較大區別,如下圖所示:
1.3.2. 選擇.NET Core 還是.NET Framework
產品需求 | .Net Core/Framework |
---|---|
使用Windows Forms和WPF的Windows客戶端應用程序 | .NET Framework |
使用到WCF,WF等庫的應用程序 | .NET Framework |
需要使用的第三方.NET 庫或NuGet包不能用于.NET Core | .NET Framework |
需要使用不可用于 .NET Core 的 .NET 技術 | .NET Framework |
需要使用不支持 .NET Core 的平臺 | .NET Framework |
預配置的環境和系統 | .NET Framework更好 |
對Dockers容器支持 | 都支持,但.NET Core更適合 |
微服務 | 都可以,但.NET Core更適合 |
跨平臺需求 | .NET Core |
需要高性能和可擴展的系統 | .NET Core |
需要按應用程序級別選擇并行的 .NET 版本 | .NET Core |
1.4. 總結
.NET Core平臺自2016年誕生到現在發展很快,這不稀奇.在它出生前微軟就積累的多年.NET Framework經驗.從以上我們能看出微軟的策略:
- 第一步最重要的是實現跨平臺
- 第二步是使其具有并超越當前.NET Framework的能力
- 第三步是實現一統各平臺開發和運行環境,包括各端(服務器,手持設備,IOT等等)
目前看第一步完成度很高,第二步完成了70%(按API數量實現).第三步也一直在做.我們能從微軟的發展路線中看到一個美好的前景,即用.NET的語言給各種設備寫一遍程序就足以應付產品需求,這是多方共贏的局面。我們也由衷的希望.NET Core有一個更加美好的未來。