伺服器應用程式的 .NET 與 .NET Framework
建置伺服器端應用程式有兩個支援的 .NET 實作 :.NET 和 .NET Framework。 最新的 .NET 版本(目前為 .NET 8)是用於伺服器開發的慣用 .NET 版本。 繼續使用 .NET Framework 的原因很明確且有限。
實作 |
包含的版本 |
.NET |
.NET Core 1.0 - 3.1 .NET 5 和更新版本 |
.NET Framework |
.NET Framework 1.0 - 4.8 |
.NET 對於伺服器應用程式具有下列優點:
跨平台運作。
.NET 可讓您的 Web 或服務應用程式在多個平台上執行,例如 Windows、Linux 和 macOS。 您也可以使用這些作業系統中的任何一個作為開發工作站。 在 Windows 上使用 Visual Studio 集成開發環境 (IDE),或在 macOS、Linux 或 Windows 上使用 Visual Studio Code。 Visual Studio Code 支援 IntelliSense 和偵錯。 大多數的協力廠商編輯器 (例如 Sublime、Emacs 和 VI) 都可搭配 .NET 使用。 這些協力廠商編輯器會透過 Omnisharp 取得編輯器 IntelliSense。 您也可以略過程式代碼編輯器,並直接使用 .NET CLI。
可讓您以微服務為目標。
微服務架構可讓您跨越服務界限混用技術。 此技術混合可讓新的微服務逐步採用 .NET,以便與其他微服務或服務搭配使用。 例如,您可以混合使用 .NET Framework、Java、Ruby 或其他單一技術所開發的微服務或服務。
您可以使用的基礎結構平台有很多。 Azure Service Fabric 是針對大型且複雜的微服務系統所設計。 Azure App Service 是無狀態微服務的理想選擇。 以 Docker 為基礎的微服務替代方案符合任何微服務方法,如下一節(支援 Docker 容器)所述。 所有的這些平台均支援 .NET,並使其更適合用來裝載您的微服務。
如需微服務架構的詳細資訊,請參閱 .NET 微服務:容器化 .NET 應用程式的架構。
支援 Docker 容器。
容器通常會與微服務架構一同使用。 容器也可用來將遵循任何架構模式的 Web 應用程式或服務容器化。 雖然 .NET Framework 可以在 Windows 容器上使用,但 .NET 的模組化和輕量本質使其成為容器更好的選擇。 當您建立和部署容器時,使用 .NET 的映像大小遠小於 .NET Framework。 由於它是跨平台型項目,因此您可以將伺服器應用程式部署到 Linux Docker 容器。
您可以在自己的Linux或 Windows 基礎結構或雲端服務中裝載 Docker 容器,例如 Azure Kubernetes Service。 Azure Kubernetes Service 可在雲端中管理、協調及調整容器型應用程式。
高效能且可調整。
當您的系統需要最佳效能和延展性時,.NET 和 ASP.NET Core 就是最好的選擇。 Windows Server 和 Linux 的高效能伺服器執行階段讓 ASP.NET Core 成為 TechEmpower 基準測試中效能最高的 Web 架構。
效能和延展性對於微服務架構特別重要,其中可執行數百個微服務。 使用 ASP.NET Core 時,系統會以較少的伺服器或虛擬機(VM)執行,以節省基礎結構和裝載的成本。
支援每個應用程式的並存 .NET 版本。
.NET 實作支援同一部計算機上不同 .NET 運行時間版本的並存安裝。 此功能允許相同伺服器上的多個服務,每個服務都是在其本身的 .NET 版本上。 它也會在應用程式升級和 IT 作業方面降低風險並省下成本。
.NET Framework 無法並存安裝。 它是 Windows 元件,一次只能有一個版本存在於計算機上:每個 .NET Framework 版本都會取代舊版。 如果您安裝以較新版本 .NET Framework 為目標的新應用程式,可能會中斷電腦上執行的現有應用程式,因為會取代舊版元件。
更安全。
如先前所述, .NET 實作為新的應用程式和應用程式模式提供顯著的優點。 不過,在某些特定案例中,您可能需要針對伺服器應用程式使用 .NET Framework,而且將繼續支援 .NET Framework。 當您的伺服器應用程式使用 .NET Framework 時:
您的應用程式目前使用 .NET Framework。
在大多數的情況中,您不需將現有的應用程式移轉到 .NET, 相反地,建議您在擴充現有應用程式時使用 .NET,例如在 ASP.NET Core 中撰寫新的 Web 服務。
您的應用程式使用不適用於 .NET 的第三方連結庫或 NuGet 套件。
.NET Standard 可跨所有 .NET 實作共用程序代碼,包括 .NET 6+。 使用 .NET Standard 2.0 時,相容性模式可讓 .NET Standard 和 .NET 專案參考 .NET Framework 程式庫。 如需詳細資訊,請參閱 .NET Framework 程式庫的支援。
只有當連結庫或 NuGet 套件使用 .NET Standard 或 .NET 中無法使用的技術時,才應該使用 .NET Framework。
您的應用程式使用不適用於 .NET 的 .NET Framework 技術。
某些 .NET Framework 技術無法在 .NET 中使用。 下列清單顯示 .NET 中找不到的常見技術:
- ASP.NET Web Forms 應用程式:ASP.NET Web Forms 只能在 .NET Framework 中使用。 ASP.NET Core 無法用於 ASP.NET Web Forms。
- ASP.NET Web Pages 應用程式:ASP.NET Web Pages 未隨附於 ASP.NET Core 中。
- 工作流程相關的服務︰Windows Workflow Foundation (WF)、工作流程服務 (WCF + 單一服務中的 WF) 和 WCF Data Services (先前稱為 "ADO.NET Data Services") 僅適用於 .NET Framework。
- 語言支援:.NET 中支援 Visual Basic 和 F#,但 並非所有專案類型都支援。 如需支援的專案範本清單,請參閱 dotnet new 的範本選項。
如需詳細資訊,請參閱 .NET 上無法使用的 .NET Framework 技術。
您的應用程式使用不支援 .NET 的平台。
某些 Microsoft 或協力廠商平台不支援 .NET。 部分 Azure 服務提供尚無法在 .NET 上使用的 SDK。 在此類情況下,您可使用對等的 REST API,而非用戶端 SDK。