《ASP.NET Core 高性能系列》關於.NET Core的部署方式

概述,.NET Core應用程序可以創建三種類型的部署:FDD SCD FDE

  • 框架依賴的部署(FDD)。顧名思義,框架依賴的部署(FDD)依賴於目標系統上是否存在.NET Core版本。由於.NET Core已經存在,因此您的應用程序在不同的.NET Core版本中進行移植。您的應用程序僅包含其自己的代碼以及.NET Core庫之外的任何第三方依賴項。FDD包含.dll文件,可以通過使用dotnet命令行啓動這些文件。

    例如,dotnet app.dll運行名爲的應用程序app

  • 自包含的部署(SCD)。與FDD不同,自包含部署(SCD)不依賴於目標系統上共享組件的存在。所有組件,包括.NET Core庫和.NET Core運行時,都包含在應用程序中

  • 依賴框架的可執行文件(FDE)。生成在目標平臺上運行的可執行文件。與FDD相似,框架相關的可執行文件(FDE)是特定於平臺的,並且不是自包含的。這些部署仍然依賴於存在共享的系統範圍的.NET Core版本來運行。可以通過調用已發佈的可執行文件來運行您的應用程序,而無需dotnet直接調用該實用程序(和FDD的主要區別)

1.框架依賴的部署(FDD)

對於FDD,僅部署應用程序和第三方依賴項。應用將使用目標系統上存在的.NET Core版本,

這是針對.NET Core的.NET Core和ASP.NET Core應用程序的默認部署模型。

FDD的優點:

  • 不必預先定義你的應用程序的目標操作系統。

  • 部署包的很小。只會部署應用程序及其依賴項,而不部署.NET Core本身。

  • 除非被覆蓋,否則FDD將使用目標系統上安裝的最新的.NET Core運行時。這樣應用程序可以使用.NET Core運行時的最新修補版本。

  • 多個應用程序使用同一.NET Core安裝,從而減少了主機系統上的磁盤空間和內存使用。

FDD的缺點:

  • 僅當您的應用程序所面向的.NET Core 版本或更高版本已在主機系統上安裝時,您的應用程序才能運行。

  • .NET Core運行時和庫可能會在您不瞭解未來版本的情況下進行更改。在極少數情況下,這可能會改變您應用的行爲。

2.自包含部署(SCD)

SCD的優點:

  • 可以完全控制與應用程序一起部署的.NET Core版本。

  • 不用擔心目標系統沒有安裝.NET Core

SCD的缺點:

  • 由於.NET Core包含在部署程序包中,因此您必須預先選擇要爲其構建部署程序包的目標系統平臺。

  • 部署包相對較大,因爲必須包括.NET Core以及應用程序及其第三方依賴項。

    從.NET Core 2.0開始,通過使用.NET Core 全球化不變模式,您可以將Linux系統上的部署大小減少約28 MB 。通常,Linux上的.NET Core依賴ICU庫提供全球化支持。在不變模式下,庫不包含在您的部署中,並且所有區域性的行爲都與不變區域性類似。

  • 將大量獨立的.NET Core應用程序部署到系統上會佔用大量磁盤空間,因爲每個應用程序都複製.NET Core文件。

3.依賴框架的可執行文件(FDE)

從.NET Core 2.2開始,可以將應用程序以及所有必需的第三方依賴項部署爲FDE。應用將使用目標系統上安裝的.NET Core版本。

FDE的優點:

  • 部署包的大小很小。您只部署應用程序及其依賴項,而不部署.NET Core本身。

  • 多個應用程序使用同一.NET Core安裝,從而減少了主機系統上的磁盤空間和內存使用。

  • 可以通過調用已發佈的可執行文件來運行您的應用程序,而無需dotnet直接調用該實用程序。

FDE的缺點:

  • 僅當您的應用程序所面向的.NET Core 版本或更高版本已在主機系統上安裝時,您的應用程序才能運行。

  • .NET Core運行時和庫可能會在您不瞭解未來版本的情況下進行更改。在極少數情況下,這可能會改變您應用的行爲。

  • 您必須爲每個目標平臺發佈您的應用程序。

發佈方式

 

以上 .NET Core RID 說明

 

Windows RID

僅列出了公共值。 若要獲取最新的完整版,請參閱 CoreFX 存儲庫上的 runtime.json 文件。

  • 可移植(.NET Core 2.0 或更高版本)
    • win-x64
    • win-x86
    • win-arm
    • win-arm64
  • Windows 7 / Windows Server 2008 R2
    • win7-x64
    • win7-x86
  • Windows 8.1 / Windows Server 2012 R2
    • win81-x64
    • win81-x86
    • win81-arm
  • Windows 10 / Windows Server 2016
    • win10-x64
    • win10-x86
    • win10-arm
    • win10-arm64

 

 

Linux RID

僅列出了公共值。 若要獲取最新的完整版,請參閱 CoreFX 存儲庫上的 runtime.json 文件。 運行以下未列出的發行版的設備可能適用於其中一個可移植 RID。 例如,可以將運行未列出的 Linux 發行版的 Raspberry Pi 設備定向爲使用 linux-arm

  • 可移植(.NET Core 2.0 或更高版本)
    • linux-x64(大多數桌面發行版,如 CentOS、Debian、Fedora、Ubuntu 及派生版本)
    • linux-musl-x64(使用 musl 的輕量級發行版,如 Alpine Linux)
    • linux-arm(在 ARM 上運行的 Linux 分發版,如 Raspberry Pi)
  • Red Hat Enterprise Linux
    • rhel-x64(被 linux-x64 取代,適用於 RHEL 6 以上版本)
    • rhel.6-x64(.NET Core 2.0 或更高版本)
  • Tizen(.NET Core 2.0 或更高版本)
    • tizen
    • tizen.4.0.0
    • tizen.5.0.0

有關詳細信息,請參閱 .NET Core 依賴項和要求

macOS RID

macOS RID 使用較早的“OSX”品牌。 僅列出了公共值。 若要獲取最新的完整版,請參閱 CoreFX 存儲庫上的 runtime.json 文件。

  • 可移植(.NET Core 2.0 或更高版本)
    • osx-x64(最低 OS 版本爲 macOS 10.12 Sierra)
  • macOS 10.10 Yosemite
    • osx.10.10-x64
  • macOS 10.11 El Capitan
    • osx.10.11-x64
  • macOS 10.12 Sierra(.NET Core 1.1 或更高版本)
    • osx.10.12-x64
  • macOS 10.13 High Sierra(.NET Core 1.1 或更高版本)
    • osx.10.13-x64
  • macOS 10.14 Mojave(.NET Core 1.1 或更高版本)
    • osx.10.14-x64
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章