.NET .NET Core .NET Framework 這三個是什麼?差別在哪裡?快速釐清懶人包

念法

「.NET」,官方念作 dot net (打 net),不過唸做「點 NET」大家也是聽的懂啦

.NET Framework 是什麼?

首先,.NET Framework 是一個軟體框架,於2002年發行,現在最新的版本是 .NET Framework 4.8,也將會是 .NET Framework 的最後一個版本,可以使用 C#、F#、VB 等多種語言開發,內建於 Windows 中。

.NET Framework 是做什麼的?他就是把你寫的程式翻譯,讓 windows,讓你的電腦主機可以了解你透過程式想讓他們達成的事情。你想要存取主機的資料,也不用研究在哪個記憶體位置或是底層硬體的操作方式,只要透過 .NET Framework 的類別庫組,使用他開放的 API 就可以很輕鬆的操作。

.NET Core 是什麼?

.NET Core 是從 2014 年開始,考慮到跨平台(Windows、Linux、macOS、iOS、Android)、只包含最小功能(其餘功能可以作為套件安裝)、重新寫過且開源的 .NET Framework 框架。.NET Core 的最高版本為 .NET Core 3.1,且只會到 3.1 (依然會有安全性更新,目前最新為 2022/06/14 的 3.1.26)

.NET 是什麼?

.NET Core 3.1 的下一個版本叫做 .NET 5,沒錯就是改名字,省略「Core」,因為微軟要強調這是 .NET 未來的主要實作,且將支援更多應用程式和平台。那 .NET 4 又或是 .NET Core 4 呢?微軟說怕和 .NET Framework 4.x 搞混,所以跳過 4,直接變成 .NET 5 (註: 筆者有聽過有人說因為 4 不吉利所以才跳過 4...)

另外:
ASP.NET Core 5.0 還是保留 「Core」,因為怕和ASP.NET MVC 5 混淆
然後Entity Framework Core 5.0 會保留 「Core」,以避免與 Entity Framework 5 和6混淆

所以目前 .NET 的發展如下(由上到下):
  • .NET Core 3.1 (長期支援, 2022年12月13日結束支援)
  • .NET 5 (2022年5月10日結束支援)
  • .NET 6 (長期支援, 2024年11月12日結束支援)
  • .NET 7 (2024年5月14日結束支援)
  • .NET 8 (長期支援)


一開始 .NET 被用來表示「通用開發平台」,只是出現了許多「實現」,又或是作為 .NET Framework 這個 Framework 的簡稱,也可能被用來泛指 .NET 相關的各種技術,所以這個名字其實代表很多事物。不過從 .NET 5 開始, .NET 只代表這個框架(又或是說平台)。

總結

  • .NET Framework 永遠停留在 4.8 (依然會有安全性更新),且 .NET 5 不會取代 .NET Framework。但官方建議如果是已使用 .NET Framework 開發的軟體,不需要遷移,但如果是新開發則建議使用 .NET 5 或以上
  • .NET 這次不是新框架,就是之前的 .NET Core
  • 未來將會是 .NET,並且 .NET 每年 11 月更新,奇數年份發表的版本(.NET 6/8)是長期支援(LTS, 正式發行後提供 3 年支援),偶數年份發表的版本(.NET 5/7)是短期支援(STS, 正式發行後提供 1.5 年支援),所以最好兩年要升級一次 .NET 版本

參考資料:
維基百科 .NET Framework
微軟:What is .NET Framework?
Github .NET repositories
auth0:What is .NET? An Overview of the Platform
微軟:Plan for Entity Framework Core 5.0
微軟開發部落格:Porting to .NET Core
Microsoft.Learn - lifecycle

嗯,下次來聊聊 .NET Standard 好了...

留言

  1. 不好意思大大請問一下.NET 5 是可以跨平台的版本嗎還是只是.NET Framwork的升級
    所以.NET 6 CORE MVC(可以跨平台) 和 .NET 5 MVC(不行跨平台)是差在可以跨平台嗎?

    回覆刪除
    回覆
    1. .NET 5 的下一版叫做 .NET 6 ,兩個都是可以跨平台的

      刪除
  2. 總結的部分,用「年份」來區別 LTS 或 STS 感覺很混淆,直接用「版本」來區分似乎容易一些:
    .NET 5/7 都是 STS (發行後提供1.5年的support);
    .NET 6/8 都是 LTS (發行後提供3年的support)

    回覆刪除

張貼留言

如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com