發佈 .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 執行階段更新
應用程式的部署位置
在發佈應用程式之後,您可以將其部署到任何支援 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)