.NET 生態系統好亂? 一次幫你搞懂

相信滿多人剛接觸 C# 的時候,都很難搞懂整個 C# 生態系統。最近因為天天在寫 C#,就對整個生態系統做了一個簡單整理,剛好可以讓各位快速了解 C# 的生態系。

.NET 簡介

一開始我們先來認識一下 .NET 到底是什麼。

.NET 是一個微軟開發的 SDK,整個生態系統包含 .NET Framework、.NET(.NET Core)、.NET Standard 等。.NET 生態系主要使用 C# 做為開發語言,但也可以使用其他語言開發,例如 F#、VB.NET 等。以下針對各個 Runtime 做簡單介紹

.NET Framework

.NET Framework 是微軟官方開發的 Windows 限定 .NET Runtime。.NET Framework 提供了一些限定的功能,像是大家熟悉的 W inForm 就是其中之一,他最大的缺點就是沒辦法跨平台執行,因此有了下面的幾項產品。

Mono

Mono 是一個社群維護的跨平台 .NET Runtime,他實作了一部份的 .NET Framework 功能,因此可作為 .NET Framework 在跨平台下的替代品。著名的 Unity 遊戲引擎就是使用 Mono 來做為 Scripting Backend。

Unity 還提供了 IL2CPP 來做為 Scripting Backend,但是 IL2CPP 並不是 .NET Runtime,他是一個 C++ Compiler,他會將 C# 編譯成 C++,再透過 C++ Compiler 來編譯成執行檔。

.NET (.NET Core)

原則上現在的 .NET Core 和 .NET 是同個東西。這東西的發展歷史是這樣的,當初 .NET Framework 只能在 Windows 上執行,微軟覺得好像有哪裡不太對,於是生出了 .NET Core 作為 .NET Framework 在其他平台下的替代品。不過因為跨平台的關係,依舊缺少了部分 .NET Framework 的功能。後來在 .NET Core 3.1 後,微軟改了產品名稱,日後版本更名為 .NET,並且直接從 .NET 5 開始出,後續版本名稱就變成 .NET 6、.NET 7 等。

.NET Standard

因為 .NET Core 和 .NET Framework 寫完的程式碼其實完全不能共用,於是微軟又再次生出了 .NET Standard。.NET Standard 是一個標準,他定義了一些 .NET Framework 和 .NET Core 共同實作的功能,這樣就可以讓 .NET Framework 和 .NET Core 共用一些程式碼。不同的 .NET Standard 版本定義的範圍也不一樣,可以參考微軟官方的文件來確認。

ASP 體系

ASP.NET

原本是指 .NET Framework 上的 ASP,在下面的 ASP.NET Core 出來後,有時候名稱會混在一起用。總而言之是 .NET 驅動的 Web Framework。ASP.NET MVC 則是上面的 MVC 框架,可以搭配 Entity Framework (EF) 來做資料庫操作。

ASP.NET Core

其實就是 ASP.NET 在 .NET Core 上的移植版,同樣也有 ASP.NET Core MVC 和 EF Core,目前如果要寫 C# backend 的話,都推薦直接用 ASP.NET Core。