iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
佛心分享-IT 人自學之術

靠近 ASP .NET Core 一點點系列 第 3

Day 3 愛恨糾葛:.NET Core SDK 與 Runtime 的複雜關係

  • 分享至 

  • xImage
  •  

引言
.NET Core SDK 和 Runtime 是兩個不可或缺的。它們之間的關係就像愛恨糾葛的戀人,既相互依賴,又各自獨立。

什麼是 .NET Core SDK?

.NET Core SDK(Software Development Kit)是一組工具庫,為開發者提供了構建、編譯和發布 .NET Core 應用程式所需的一切。
SDK 包含了:

  • 命令行工具:如 dotnet 命令,用於創建、編譯和發布應用程式。
  • 編譯器:將 C# 等語言的源代碼編譯成中間語言(IL)。
  • 框架庫:提供基本的數據類型、應用組成類型和基本工具

什麼是 .NET Core Runtime?

.NET Core Runtime 是運行 .NET Core 應用程式所需的環境。
Runtime 包括:

  • CLR(Common Language Runtime):負責代碼的執行、內存管理和垃圾回收。
  • 框架庫:與 SDK 中的框架庫相同,用於運行應用程式

兩者差異

  • 要執行 .NET應用程式就必須要有 .NET Runtime,而 SDK 只是比 Runtime 多了開發會用到的套件
  • .NET Core SDK 包含 .NET Core Runtime 所有內容,並且多了和開發相關功能的工具,因此如果要開發,就選擇安裝SDK,SDK可以開發與執行建置後程式
  • 如果只是要執行.NET Core 程式,就安裝 .NET Core Runtime 即可, Runtime 只能執行 .NET Core 建置後的程式

Runtime 分三種 :

1. .NET Runtime 版本號

  • 用途:適用於需要運行背景程式與排程的應用程式。
  • 特點:不包含 Windows Forms 組件和 ASP.NET Core 組件,僅提供運行 .NET 應用程式的基本環境
    https://ithelp.ithome.com.tw/upload/images/20240916/2013395439mEphaN8a.png

2. .NET Desktop Runtime 版本號

  • 用途:適用於需要運行桌面應用程式的情境。
  • 特點:除了 .NET Runtime 的基本功能外,還包含 Windows Forms 組件,適合運行 Windows 桌面應用程式
    https://ithelp.ithome.com.tw/upload/images/20240916/20133954cpDoNXFJcs.png

3. ASP .NET Core Runtime 版本號

  • 用途:適用於需要運行 ASP.NET Core 應用程式的情境。
  • 特點:除了 .NET Runtime 的基本功能外,還包含 ASP.NET Core 組件,適合運行 Web 應用程式和服務
  • 特別建議:微軟建議安裝 ASP.NET Core Hosting Bundle,這個 Bundle 包含了 ASP.NET Core Runtime 和 IIS 模組,能夠更好地支持在 IIS 上運行 ASP.NET Core 應用程式,如下圖
    https://ithelp.ithome.com.tw/upload/images/20240916/20133954rBF3B0Meqc.png

補充

  • 如果下載的是 Windows x64 或是 x86 這些都不包含 AspNetCoreModuleV2 ,IIS上就不會有此模組
  • 三種 Runtime 都是獨立的,若下載 ASP .NET Core Runtime 內的 x64/x86,就不會包含 .NET Runtime,但若下載 ASP .NET Core Runtime 的 hosting bundle,就會包含 .NET Runtime,但不包含 .NET Desktop Runtime

簡單統整今日重點

  1. 正式環境,不要下載 SDK比較好 (個人覺得),下載 Runtime 即可,因為下載 SDK,意味著開發的工具,一大包都下載下來了。
  2. 若要部署 IIS,則需下載 ASP .NET Core Runtime 的 Hosting Bundle
  3. 版本號補充說明 :
    以 8.0.8 為例
  • 8主版本號 (Major Version),表示重大更新或改變。
  • 0次版本號 (Minor Version),表示新增功能或重大改進。
  • 8修訂版本號 (Patch Version),表示錯誤修復和小改進。

今日結語
了解 SDK 與 Runtime,對於在開發、部屬上的選擇都會更正確與了解,在正確環境上,下載與使用較為正確的!
繼續努力 ~~ 加油加油!


上一篇
Day 2 .NET 的進化之旅:從框架到跨平台的華麗轉身
下一篇
Day 4 避免版本地獄:如何用 global.json 管理 .NET SDK
系列文
靠近 ASP .NET Core 一點點13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言