發佈 .NET 應用程式

已完成

使用 ASP.NET Core 為應用程式撰寫程式碼不同於使用 HTML、CSS 和 JavaScript 設計靜態網站。 靜態網站可以部署到任何支援靜態檔案的網頁伺服器。 網頁伺服器不需要處理靜態檔案;其只負責透過 HTTP 提供靜態檔案。 當網頁瀏覽器要求資源時,網頁伺服器就只是將靜態檔案傳回給瀏覽器。

另一方面,ASP.NET Core 應用程式則是動態 Web 應用程式。 其會在網頁伺服器上以程式的形式執行。 當使用者的網頁瀏覽器傳送要求給網頁伺服器時,網頁伺服器會執行應用程式來產生回應,然後網頁伺服器會將回應傳回給瀏覽器。

發佈 .NET 應用程式是讓應用程式做好準備以便部署到伺服器的流程。 當您發佈 .NET 應用程式時,您會將應用程式及其相依性封裝到可輕鬆部署的資料夾。 已發佈的應用程式未包含任何原始程式碼檔案,但有包含要執行應用程式所需的所有檔案,包括已編譯的組件 (DLL)、設定檔以及應用程式所需的任何其他資產。 然後,該應用程式可以部署到網頁伺服器、雲端服務或其他主控環境。

部署類型

當您發佈 .NET 應用程式時,您可以在兩種不同類型的部署之間進行選擇:架構相依部署和獨立式部署。 您選擇的部署類型會影響應用程式的封裝和部署方式。

架構相依部署

此動畫顯示架構相依部署如何相依於目標機器上存在的 .NET 執行階段。

架構相依部署僅包含應用程式的檔案和相依性。 其未包含 .NET 執行階段。 相反地,目標機器則必須已安裝 .NET 執行階段才能執行應用程式。 這種類型的部署是 .NET 應用程式的預設部署。

自封式部署

此動畫顯示獨立式部署如何包含 .NET 執行階段與應用程式。

獨立式部署包含應用程式的檔案、相依性和 .NET 執行階段。 .NET 執行階段會與應用程式一起包含其中,因此目標機器不需要安裝 .NET 執行階段就能執行應用程式。 包含執行階段使得獨立式部署的大小大於架構相依部署,但也使其具有較高的可攜性。 其也可讓您更輕鬆地在同一個機器上並排執行多個版本的 .NET 執行階段。

選擇部署類型

您選擇的部署類型取決於應用程式的需求和目標環境。 在選擇部署類型時,請考慮下列因素:

部署類型

優點

缺點

架構相依

  • 較小的部署大小
  • 較快的部署時間
  • 使用安裝在目標機器上的 .NET 執行階段 (不論作業系統為何)
  • 需要在目標機器上安裝 .NET 執行階段
  • 需要管理目標機器上所安裝的 .NET 執行階段版本

獨立式

  • 不需要在目標機器上安裝 .NET 執行階段
  • 更輕鬆地並排執行多個 .NET 版本
  • 較大的部署大小
  • 較慢的部署時間
  • 必須隨應用程式一起部署 .NET 執行階段更新

應用程式的部署位置

在發佈應用程式之後,您可以將其部署到任何支援 ASP.NET Core 的環境。 以下提供一些選項:

Kestrel

根據預設,ASP.NET Core 應用程式會在 ASP.NET Core 的內建網頁伺服器 Kestrel 中執行。 Kestrel 是跨平台系統,並已經過調整以獲得高效能。 其支援所有新式網頁伺服器的功能,包括 HTTPS、HTTP/2、HTTP/3 和 WebSocket。 其也可供自訂和延伸,因此您可以將其設定為符合您應用程式的需求。 Kestrel 是建議用於 ASP.NET Core 應用程式的網頁伺服器。

由於 Kestrel 內建於 ASP.NET Core 中,因此您可以將應用程式部署到任何能夠執行 .NET 的機器,包括 Windows、macOS 和 Linux。 Kestrel 本身即可運作良好,但在 Kestrel 上執行的應用程式通常會部署在反向 Proxy 伺服器 (例如 Internet Information Services (IIS)、Nginx 或 Apache) 後方。 反向 Proxy 伺服器會處理來自網際網路的傳入要求,並將其轉送至 Kestrel。 這可讓您利用反向 Proxy 伺服器的功能,例如負載平衡、快取和 SSL 終止。

Internet Information Services (IIS)

如果您要部署至 Windows,則可以在 IIS 中裝載 ASP.NET Core 應用程式。 若要這樣做,您必須安裝適用於 IIS 的 ASP.NET Core 模組。 此模組會將來自 IIS 的要求轉送至 Kestrel (Kestrel 會執行您的應用程式)。 這可讓您利用 IIS 的功能,例如流程管理、記錄和安全性。

容器

如果您要部署到容器化環境,則可以將 ASP.NET Core 應用程式封裝為 Docker 容器。 這可讓您在任何支援 Docker 的容器執行階段 (例如 Docker Desktop、Docker Enterprise 或 Kubernetes) 中執行您的應用程式。 容器具有可攜性和可調整性,因此您可以在任何支援 Docker 的機器上執行您的應用程式 (不論基礎作業系統為何)。

Azure

如果您要部署至 Azure,則可以在 Azure App Service 或 Azure 容器應用程式中裝載您的 ASP.NET Core 應用程式。 有各種工具可讓您輕鬆地從命令列將應用程式部署至 Azure。 這些工具包括:

  • 適用於 Visual Studio Code 的 Azure Tools 延伸模組
  • Visual Studio
  • Azure CLI
  • Azure 開發人員 CLI (azd)