.NET Core 應用程序三種部署方式
- 2020 年 2 月 24 日
- 筆記
可以為 .NET Core 應用程序創建三種部署:
- 依賴框架的部署。 顧名思義,依賴框架的部署 (FDD) 依賴目標系統上存在共享系統級版本的 .NET Core。 由於已存在 .NET Core,因此應用在 .NET Core 安裝程序間也是可移植的。 應用僅包含其自己的代碼和任何位於 .NET Core 庫外的第三方依賴項。 FDD 包含可通過在命令行中使用 dotnet 實用程序啟動的 .dll 文件。 例如,dotnet app.dll 就可以運行一個名為 app 的應用程序。
- 獨立部署。 與 FDD 不同,獨立部署 (SCD) 不依賴目標系統上存在的共享組件。 所有組件(包括 .NET Core 庫和 .NET Core 運行時)都包含在應用程序中,並且獨立於其他 .NET Core 應用程序。 SCD 包括一個可執行文件(如 Windows 平台上名為 app 的應用程序的 app.exe ),它是特定於平台的 .NET Core 主機的重命名版本,還包括一個 .dll 文件(如 app.dll ),而它是實際的應用程序。
- 依賴框架的可執行文件。 生成在目標平台上運行的可執行文件。 類似於 FDD,依賴框架的可執行文件 (FDE) 是特定於平台的,而不是自包含的。 這些部署的運行仍依賴於現有的 .NET Core 共享系統級版本。 與 SCD 不同,應用僅包含代碼和任何位於 .NET Core 庫外的第三方依賴項。 FDE 生成在目標平台上運行的可執行文件。
依賴框架的部署 (FDD)
對於 FDD,僅部署應用程序和第三方依賴項。 應用將使用目標系統上存在的 .NET Core 版本。 這是定目標到 .NET Core 的 .NET Core 和 ASP.NET Core 應用程序的默認部署模型。
為什麼創建依賴框架的部署?
部署 FDD 具有很多優點: 不需要提前定義 .NET Core 應用將在其上運行的目標操作系統。 因為無論什麼操作系統,.NET Core 的可執行文件和庫都是用通用的 PE 文件格式,因此,無論什麼基礎操作系統,.NET Core 都可執行應用。 有關 PE 文件格式的詳細信息,請參閱 .NET 程序集文件格式。 部署包很小。 只需部署應用及其依賴項,而無需部署 .NET Core 本身。 除非重寫,否則 FDD 將使用目標系統上安裝的最新服務運行時。 這允許應用程序使用 .NET Core 運行時的最新修補版本。 許多應用都可使用相同的 .NET Core 安裝,從而降低了主機系統上磁盤空間和內存使用量。 也有幾個缺點: 僅當主機系統上已安裝應用設為目標的 .NET Core 版本或更高版本時,應用才能運行。 如果不了解將來版本,.NET Core 運行時和庫可能發生更改。 在極少數情況下,這可能會更改應用的行為。
獨立部署 (SCD)
對於獨立部署,可以部署應用和所需的第三方依賴項以及生成應用所使用的 .NET Core 版本。 創建 SCD 不包括各種平台上的 .NET Core 本機依賴項,因此運行應用前這些依賴項必須已存在。 有關在運行時進行版本綁定的詳細信息,請參閱有關 .NET Core 中的版本綁定的文章。 從 NET Core 2.1 SDK(版本 2.1.300)開始,.NET Core 支持修補程序版本前滾 。 在創建獨立部署時,.NET Core 工具會自動包含你的應用程序所指向的 .NET Core 版本的最新服務的運行時。 (最新服務的運行時包括安全修補程序和其他 bug 修復程序。)服務的運行時不需要存在於你的生成系統上;它會從 NuGet.org 自動下載。有關詳細信息,包括有關如何選擇退出修補程序版本前滾的說明,請參閱獨立部署運行時前滾。 FDD 和 SCD 部署使用單獨的主機可執行文件,使你可以使用發佈者簽名為 SCD 簽署主機可執行文件。
為什麼要部署獨立部署?
部署獨立部署主要有兩個優點: 可以對與應用一起部署的 .NET Core 版本具有單獨的控制權。 只有你才能維護 .NET Core。 請放心,目標系統可以運行你的 .NET Core 應用,因為你提供的是應用將在其上運行的 .NET Core 版本。 它也有幾個缺點: 由於 .NET Core 包含在部署包中,因此必須提前選擇為其生成部署包的目標平台。 部署包相對較大,因為需要將 .NET Core 和應用及其第三方依賴項包括在內。 從.NET Core 2.0 開始,可以通過使用 .NET Core 全球化固定模式在 Linux 系統上減少大約 28 MB 的部署大小。 通常,Linux 上的 .NET Core 依賴於 ICU 庫來實現全球化支持。 在固定模式下,庫不包含在部署中,並且所有區域性的行為均類似於固定區域性。 向系統部署大量獨立的 .NET Core 應用可能會使用大量磁盤空間,因為每個應用都會複製 .NET Core 文件。
依賴框架的可執行文件 (FDE)
從 .NET Core 2.2 開始,可以將應用程序部署為 FDE,以及所需的第三方依賴項。 應用將使用目標系統上安裝的 .NET Core 版本。
為什麼要部署依賴框架的可執行文件?
部署 FDE 具有很多優點: 部署包很小。 只需部署應用及其依賴項,而無需部署 .NET Core 本身。 許多應用都可使用相同的 .NET Core 安裝,從而降低了主機系統上磁盤空間和內存使用量。 應用程序無需調用 dotnet 實用程序,可以通過調用已發佈的可執行文件直接運行。 也有幾個缺點: 僅當主機系統上已安裝應用設為目標的 .NET Core 版本或更高版本時,應用才能運行。 如果不了解將來版本,.NET Core 運行時和庫可能發生更改。 在極少數情況下,這可能會更改應用的行為。 必須為每個目標平台發佈應用。