技術學習是一件系統性的事情,若是拒絕學習,那麼本身就會落後以致於被替代。.NET也是同樣,當開源、跨平臺成爲主流的時候,若是再故步自封,等待.NET的就是死路一條,幸虧.NET Core問世了,社區反響積極而又強烈,.NET Core的生態體系不斷獲得豐富。做爲.NET技術人員,你必須去深刻了解.NET Core,做爲非.NET技術人員,.NET Core也值得你去關注。css
.NET Core做爲.NET計劃的跨平臺開源版本,也是下一代.NET的主力版本,如今的微軟愈來愈開放,做爲其平臺技術從業者,沒有理由不持續跟進。也但願經過你們的努力,打造一個龐大而又健全的.NET生態體系。html
補充一下,在2019年6月27日以後,.NET Core補丁更新將再也不包含.NET Core 1.0和1.1的更新包或容器映像。咱們應該儘快從.NET Core 1.x升級到.NET Core 2.1或2.2及之後的版本。在.NET Core3.0版本中,.NET Core 將支持Winform和WPF。數據庫
本系列文章以.NET Core2.2及之後的版本爲基礎。 編程
.NET Core最大和最具競爭力的特色就是跨平臺,相較於.NET若是僅綁定於Windows並面向單一用戶,那麼其將難以在多用戶服務器環境中建立高性能的應用,Core使得Microsoft得以將開發基礎重置爲以服務器爲中心的模式。服務器
下圖是.NET Core將來的發展方向:架構
經過上圖咱們能夠知道,.NET框架的內容豐富了,包括.NET Framework、.NET Core和XAMARIN微軟使用.NET Standard Library來統一整個.NET框架,可是維護起來確是一個很是有成本的事情,因此有時候我會想,將來是否是隻會保留.NET Core的內容,而移除.NET Framework。畢竟如今的處理只是過渡期的過渡方式,可是考慮到.NET Framework龐大的用戶量,因此微軟不敢輕易放棄對.NET Framework的支持。框架
目前的版本中,.NET Core主要面向Web開發,ASP.NET Core是一個跨平臺的高性能開源框架,用於生成基於雲且鏈接 Internet 的新式應用程序。asp.net
咱們先來看一下,ASP.NET Core的優勢:模塊化
- 跨平臺。
- 內置依賴注入。
- 生成 Web UI 和 Web API 的統一場景。
- 針對可測試性進行構建。
- Razor Pages 可使基於頁面的編碼方式更簡單高效。
- 可以在 Windows、macOS 和 Linux 上進行開發和運行。
- 開放源代碼和以社區爲中心。
- 集成新式客戶端框架和開發工做流。
- 基於環境的雲配置系統。
舉一個簡單的例子,在傳統的MVC下,咱們使用以下方式編程:工具
1: @Html.ActionLink(「這是啥參數」, 「這又是啥」, 「我靠,這邊怎麼還有一個」, new { @class = "暈了"})
而在.NET Core下,咱們能夠這樣:
1: <a asp-controller=」user」 asp-action=」createuser」 class=」mycss」>CreateUser</a>
是否是.NET Core下的編程更加優雅,更像是直接操做HTML,這種例子還有不少,須要本身多多深刻了解。
若是隻是跨平臺,可能還不足以吸引廣大開發者,畢竟一個新的語言或者框架的問世,更須要很強的開發效率和執行效率。
.NET Core擁有輕型的高性能模塊化 HTTP 請求管道。可以在 IIS、Nginx、Apache、Docker 上進行託管或在本身的進程中進行自託管。使用.NET Core 時,可使用並行應用版本控制。目前的ASP.NET Core已是一個很是成熟的產品,從ASP.NET MVC/Web API轉向很是簡單。最顯著的緣由在於.NET Core應用性能的提升和佔用空間的減小,這意味着不管是對於雲仍是私有數據中心,可真正作到在基礎架構上的成本節省。
因爲.NET Core的模塊化設計,使得.NET Core能夠更快的進行版本更新,並可以使用Docker和Kubernetes等容器編排工具跨平臺開發和部署應用,這是一項真正的優點。同時.NET Core的模塊化設計意味着您只包含所需的依賴關係,這就減小了項目的沒必要要依賴,發佈包也變小了。
咱們來看下TechEmpower的測試:
這是2018年2月14日關於Plaintext的測試統計,能夠看到.NET Core的排名不是很讓人滿意,排在了17名,並且還有110個報錯
這是2019年3月25日關於Plaintext的測試統計,能夠看到.NET Core進步明顯,排在了第5名,沒有報錯,並且跟前面的測試結果很接近。Data updated歷史性的佔據了第3到第5,Fortunes .net core的排七、八、十、11,Multiple Queries 排第10,Single Query 排第18,Json排第20,查看連接(感謝20樓yywww的提醒)
但這並不意味着.NET Core的性能已經很不錯了,事實上,.NETCore在性能方面還有不少工做要作。TechEmpower以ASP.NET Core的Web服務器Kestrel爲基準,在「純文本」基準測試中,表現極佳,在涉及數據庫查詢等的高級測試中,也表現不錯,但願.NET Core能再接再礪,創造更大的輝煌。
另外在性能方面上,不少從.NET Framework遷移過來的代碼還有很大的改進空間,相信微軟也會進行深刻研究,挖掘這些性能問題,並提供更好的解決方案。
若是想要了解更詳細的的信息,能夠打開TechEmpower網站查看。
固然了,.NET Core也有不少不足的地方,好比AppDomain這塊的設計,以前AppDomain基於Windows,是對當前.NET應用進程的邏輯分區,並對同一進程中的各AppDomain實現了隔離,因爲其特殊性,.NET Core還沒有提供AppDomain功能,但願之後會出現基於AppDomain模型的解決方案。另外,.NET Core、.NET Standard和.NET Framework,仍是比較讓人感到亂的。
.NET Core目前依然在快速發展中,不少API不斷獲得豐富,同時ASP.NET Core團隊,每週都會舉行一次社區直播會議,直播地址http://live.asp.net
最後奉上兩張圖用以展現.NET Core架構及其擴展組成。
下圖是其擴展組成