.NET Core迁移前的准备工作
前段時間遷移.NET Core做了大量的試水和評估,今天整理一下分享給大家。大致有以下幾個部分:
1. .NET Core的由來
2. 為什么要遷移.NET Core
3. .NET Core3.X主要特性
4. .NET Standard和.NET Core
5. .NET Core Roadmap&版本選擇
接下來,我們詳細展開說吧。
一、.NET Core的由來
? ?這個更像是科普的資料,因為團隊的小伙伴有半路出家的,對.NET 的光輝歷史不是非常了解,所以有必要帶著大家看一遍.NETCore的由來:
? ?說.NET Core,需要先說一下.NET. 當年Java剛剛興起,如火如荼,微軟也非常推崇Java,當時Windows平臺的Java虛擬機就是微軟按照JVM標準實現的,據說也是當時性能最好的Java虛擬機。但是微軟也是有私心的,微軟總想搞點Windows平臺上的特性,有點想把Java綁定到Windows平臺上的味道,另外Sun公司確實有點小心眼,于是Sun公司就跟微軟鬧掰了,然后微軟就推出了 .NET,.NET從出生開始其實就借鑒了Java,然后又一步步在語言特性、窗體開發等方面實現了超越。Java在1.6版本以后發展緩慢,后面Java也在語言特性上借鑒了 .NET。
? ?.NET雖然一直發展的不錯,也有WPF、Unity3D這樣具有競爭力框架的出現。但是.NET平臺在一些較大的項目,不太受互聯網公司的喜愛(雖然京東、當當、攜程當年也是.NET技術路線)。但是因為.NET不是開源的框架,也不是可跨平臺的框架,那就會帶來以下問題:
? ? ?成本:選擇.NET就要選擇Visual Studio,Windows Server,license是不可忽視的成本;
? ? ?生態:沒有來自于社區的貢獻,那.NET沒有誕生優秀框架的土壤,技術社區雖然有微軟的特殊扶持,但是整體不太理想
? ? ?人才:無法吸引一線公司優秀互聯網工程師加入,因為他們用Java、Go等,但是.NET Core誕生之后會大為改觀,騰訊、網易都有在使用。
? ? 縱使有Mono這么強大的框架,可以讓 .NET 跑在Linux上,但是這還不夠。畢竟Mono只能發揮.NET部分有限的能力。
? ? 同時,云計算的普及,跨平臺需求勢不可擋,Linux 作為Server的不二OS,.NET不支持Linux,比較尷尬!
? ? 另外,容器時代已經不可逆轉,跟Windows的強依賴,如何上Docker?
? ? 總之,形式所迫,擁抱變化和未來,.NET Core應運而生。
二、為什么要遷移.NET Core
? ?總結了以下幾點,大家可以補充:
.NET Core代表著未來.Net的發展方向
產品新特性、重點技術支持微軟優先考慮在最新.NET Core版本上支持
更優的代碼、更好的性能,社區大家都在貢獻、優化代碼
跨平臺支持,支持部署在Linux,可以降低VM的成本
Docker部署支持,更低的成本,更高的資源利用率,未來云原生的核心組成
面向現代互聯網應用、微服務架構、和DevOps更好地集成
開源:https://github.com/dotnet/core
更好的生態和社區
三、 .NET Core3.X主要特性
? ?同時支持Windows和Linux、MacOS,滿足不同開發者的需求,對于Web開發提供了ASP.NET Core, 對于常用數據庫訪問,提供了EF Core,對于機器學習,提供了ML.NET。大家可以根據自己業務的需要,選擇合適的技術。
四、 .NET Standard和.NET Core
?先說下事情的起源:
?.NET Framework從2002年起,一直在Release新版本,不支持跨平臺
?.NET Core是為了支持跨平臺產生的,類似的有Mono、Xamarin
? 這樣,出現了兩套代碼、兩套類庫,對于開發者來說,要同時掌握兩套SDK,會產生社區和技術的分裂。
??因此,.NET 要統一類庫標準,統一所有的API定義,這就是.NET Standard. 如下圖:
??
?.NET Standard的統一:
? .NET Standard定義了.NET平臺,統一實現的一組API。實現.Net Standard API的平臺都與目標.Net Standard庫兼容;
? .NET Framework和.NET Core都是.NET Standard的標準實現。.NET Standard是二者的交集。
? ?但是.NET Framework和.NET Core存在其個性化、擴展的類庫,需要犧牲兼容性,即:
? ?假如用.NET Framework的個性化SDK。例如注冊表、Windows Service、Winform,這樣只能部署在Windows中。
? ?假如用.NET Core的個性化SDK,部署運行時,與Windows環境下.NET Framework不兼容。
? ?所以,如果應用程序采用.NET Standard,同時支持.NET Framework和.NET Core,則可以實現兩者的兼容。一套代碼既支持運行在.NET Framework運行時下,又支持運行在.NET Core運行時下。
? ?同時.NET Standard的版本對應.NET Core、.NET Framework、Mono、Xamarin等的版本,有個對照表:
? ?
? ?這張表非常重要。體現了一個規則:
? ?假如程序的目標框架Targetframework 使用.NET Standard2.0, 則支持:
? ?.NET Core 2.0版本的工程可以引用
? ?.NET 4.6 版本的工程可以引用
? ? 但是低版本的.NET Core和.NET Framework則無法引用。
五 .NET Core Roadmap&版本選擇
?先看一下.NET Core最新的Roadmap:
??
?最新的.NET Core 3.1 將2019年11月發布,同時是LTS版本。如果大家現在開始遷移.NET Core,建議選擇一個大版本、LTS版本。我們也將選擇這個版本。
原文鏈接:https://www.cnblogs.com/tianqing/p/11619005.html
.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結
以上是生活随笔為你收集整理的.NET Core迁移前的准备工作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#刷遍Leetcode面试题系列连载(
- 下一篇: .Net Core中间件和过滤器实现错误