发布 .NET 应用

已完成

使用 ASP.NET Core 对应用进行编码不同于使用 HTML、CSS 和 JavaScript 设计静态网站。 静态网站可以部署到支持静态文件的任何 Web 服务器。 Web 服务器不需要处理静态文件;它只是通过 HTTP 为它们提供服务。 当 Web 浏览器请求资源时,Web 服务器只需将文件发送回浏览器即可。

另一方面,ASP.NET Core 应用是动态 Web 应用程序。 它在 Web 服务器上作为程序运行。 当用户的 Web 浏览器向 Web 服务器发送请求时,Web 服务器会运行应用以生成响应,然后 Web 服务器将响应发送回浏览器。

发布 .NET 应用是准备在服务器上部署的应用的过程。 发布 .NET 应用时,可将应用及其依赖项打包到一个可以轻松部署的文件夹中。 发布的应用不包含任何源代码文件,但包含运行应用所需的所有文件,包括已编译的程序集 (DLL)、配置文件以及应用所需的任何其他资产。 然后,可以将应用部署到 Web 服务器、云服务或其他托管环境。

部署类型

发布 .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 的内置 Web 服务器 Kestrel 中运行。 Kestrel 是跨平台的,为了获得高性能而进行了优化。 它支持所有新式 Web 服务器功能,包括 HTTPS、HTTP/2、HTTP/3 和 WebSocket。 它还可自定义且可扩展,因此你可以将其配置为满足应用的需求。 建议 ASP.NET Core 应用使用 Kestrel 作为 Web 服务器。

由于 Kestrel 内置于 ASP.NET Core 中,因此你可以将应用部署到能够运行 .NET 的任何计算机(包括 Windows、macOS 和 Linux)。 Kestrel 本身效果很好,但在 Kestrel 上运行的应用通常部署在反向代理服务器(例如 Internet Information Services (IIS)、Nginx 或 Apache)后面。 反向代理服务器处理来自 Internet 的传入请求,并将其转发到 Kestrel。 这样就可以利用反向代理服务器的功能,例如负载均衡、缓存和 SSL 终止。

Internet Information Services (IIS)

如果要部署到 Windows,可以在 IIS 中托管 ASP.NET Core 应用。 为此,需要安装适用于 IIS 的 ASP.NET Core 模块。 该模块将来自 IIS 的请求转发到运行应用的 Kestrel。 这样就可以利用 IIS 的功能,例如进程管理、日志记录和安全性。

容器

如果要部署到容器化环境,可以将 ASP.NET Core 应用打包为 Docker 容器。 这样就可以在任何支持 Docker 的容器运行时(例如 Docker Desktop、Docker Enterprise 或 Kubernetes)中运行应用。 容器可移植且可缩放,因此无论基础操作系统如何,你都可以在任何支持 Docker 的计算机上运行应用。

Azure

如果要部署到 Azure,可以在 Azure 应用服务或 Azure 容器应用中托管 ASP.NET Core 应用。 可以使用各种工具轻松地从命令行将应用部署到 Azure。 这些工具包括:

  • 适用于 Visual Studio Code 的 Azure Tools 扩展
  • Visual Studio
  • Azure CLI
  • Azure 开发人员 CLI (azd)