创建、构建和部署 ASP.NET Core MVC 应用到 Azure App Service





5.00/5 (5投票s)
创建、构建和部署 ASP.NET Core 应用程序到 Azure App Service
引言
ASP.NET Core 是一个跨平台、高性能、开源的框架,探索起来非常有趣。在本文中,我将介绍如何创建基本的 ASP.NET Core MVC Web 应用及其请求处理管道,并将其构建并部署到 Azure App Service。在我开始学习 ASP.NET Core 之前,我曾认为 ASP.NET Core 与 ASP.NET 完全不同,需要从头开始学习一切。但当我学习了 ASP.NET Core 后,我的假设是错误的。为什么?因为它与 ASP.NET 请求处理管道非常相似。但与 ASP.NET 框架自带的默认(预定义)请求处理管道不同,在 ASP.NET Core 中,我们决定应用程序的请求处理管道应该是什么样的。
ASP.NET Core & 框架
ASP.NET Core 应用程序的起点是 Main
方法。一旦我们创建了一个空白的 ASP.NET Core 应用程序,默认会添加 Program.cs 和 Startup.cs 文件。这两个是应用程序中两个关键的 .cs 文件。
Program.cs 文件与典型的控制台应用程序文件类似,是默认文件。其中有一个 Main
方法,里面实现了 BuildWebHost
方法。这个方法负责配置 Web 服务器和其他应用程序管道的重要组件,我们可以根据我们的需求进行自定义。
在本例中,我使用默认的 BuildWebHost
方法。CreateDefaultBuilder
会注册 Web 服务器,即 Kestrel Web 服务器,这与使用 IIS 作为 Web 服务器的 ASP.NET 不同。UseStartup
会注册 Startup 类。这是另一个重要的关键类文件。它有两个默认方法:ConfigureServices
和 Configure
方法。
ConfigureServices
方法由运行时调用。使用此方法向容器添加服务,这些服务可以在解决方案的任何地方访问。通过这个方法,我们可以看到 ASP.NET Core 如何轻松简化了依赖注入 (DI) 的强大功能。我相信您会非常喜欢这个设计。这个方法有助于在应用程序启动时只注册一次服务/类,然后在任何类文件中通过添加已注册的服务(通常在大多数情况下是类)来使用它。
Configure
方法用于注册中间件。中间件就是组装到应用程序管道以处理请求和响应的软件。每个组件
- 选择是否将请求传递给管道中的下一个组件
- 可以在管道中的下一个组件被调用之前和之后执行操作
要了解更多关于 ASP.NET Core 中间件的信息,请访问此 Microsoft 文档页面。
Configure
方法用于指定应用程序如何响应 HTTP 请求。通过将中间件组件添加到 IApplicationBuilder
实例,可以配置请求管道。每个 Use
扩展方法都会向请求管道添加一个中间件组件。例如,UseMVC
扩展方法将路由中间件添加到请求管道,并将MVC 配置为默认处理程序。
我已将代码上传到 GitHub 仓库。您可以下载并运行,这是一个非常简单的示例,您可以尝试 ASP.NET Core 库中提供的更多功能。
Razor Pages 是 ASP.NET Core MVC 的一个新方面,它使得编写面向页面的场景更加容易和高效。在 Razor Pages 出现之后,Razor Pages 成为创建 HTML 页面的首选机制,而 MVC 控制器则用于创建 Web API 和 RESTful 服务。要了解有关 Razor Page 的详细信息,请在此处单击此处。
设置主机
与 ASP.NET 不同,ASP.NET Core 可以在所有不同的机器上托管,包括 Windows、Linux 和 macOS。无论使用哪种机器,Kestrel 都是托管应用程序的 Web 服务器。有两种不同的 Host API 可供使用:
- Web Host – 适用于托管 Web 应用
- Generic Host – 适用于托管非 Web 应用
ASP.NET Core 应用配置并启动一个主机。主机负责应用程序的启动和生命周期管理。使用 IWebHostBuilder
的实例创建主机。这通常在应用程序的入口点 Main
方法中完成。在项目模板中,Main
方法是 Program.cs 文件的一部分。Program.cs 调用 CreateDefaultBuilder
来开始设置主机,这会默认完成。
创建 Azure App Service
创建 Azure App Service 以便部署我们的第一个 ASP.NET Core 应用程序。Azure App Service 使我们能够以自己选择的编程语言构建和托管 Web 应用、移动后端和 RESTful API,而无需管理基础架构。它提供自动缩放和高可用性,支持 Windows 和 Linux,并支持从 GitHub、Azure DevOps 或任何 Git 存储库进行自动化部署。
使用您的凭据登录 Azure 门户。选择 App Services -> 点击 Add -> 从 marketplace 中选择 Web App -> create。并填写以下信息:
根据环境和所需的功能选择 App Service 计划。标准层将具有基本功能,包括部署槽交换选项。本练习需要此功能。在本文的后面,我们将看到如何交换应用程序槽。
创建 App Service 后,资源组将如下所示:
在初始 Web 创建之后,将添加 Application Insights、App Service 和 App Service Plan。默认的 App Service aspdotnetcoreweb
是生产环境。如果您单击 aspdotnetcoreweb
App Service,则概述页面将如下所示。生产 URL 为“https://aspdotnetcoreweb.azurewebsites.net”。我们可以将 URL 与我们自己的自定义域名映射,或者如果我们想购买新域名,也可以在这里完成。我将把这部分留给您来完成,在本示例中,我将使用 Web 应用创建后创建的默认 URL。
当我们浏览 URL 时,会显示默认主页。稍后我们将把 ASP.NET Core Web 应用程序部署到此 URL。
在 App Service 概述页面,我创建了部署槽。有关如何创建部署槽的说明,请参阅此 Microsoft 文档。
我创建了一个名为 dev
的部署槽,这是另一个环境,类似于我们的 SIT/DEV。我们可以创建多个环境,如 dev、staging。在本示例中,我只创建了 dev 槽,添加后的资源组如下所示:
注意:资源组中会添加一个名为 dev
的新 Web 应用。它有一个与生产环境不同的 URL:“https://aspdotnetcoreweb-dev.azurewebsites.net”。现在我们有了 dev 和生产环境。我们将把 Web 应用部署到 dev 槽,然后将其交换到生产环境。这是一个典型的过程,先部署到 staging 并测试应用程序,然后再部署到生产环境。
构建并部署应用程序到 Azure App Service
有多种选项可以将应用程序部署到 Azure App Service。以下是将 ASP.NET Core 应用部署到 Azure App Service 的选项列表。请参阅此 Microsoft 文档页面。
设置构建管道,以便在代码被提交到 GitHub 存储库后自动开始构建,方法是使用 Azure Pipelines。要了解如何设置 Azure 构建管道,请参阅这篇文章。与该文章不同的是,在选择模板时,应选择 ASP.NET Core 模板作为构建模板,而不是 .NET Desktop 模板。
成功构建后,将应用程序部署到 dev 槽,我们的第一个 ASP.NET Core 应用程序已部署到 dev 环境,因为我们选择了 dev 槽作为部署目标。
将槽交换到生产环境
在 dev 环境中验证应用程序后,如果验证成功,则将 dev 槽移至生产环境。
好了!现在应用程序已部署到生产环境。只需轻松地将部署槽交换到生产环境,即可实现零停机。这是 Microsoft Azure App Service 的一项出色功能。
关注点
我总结了 ASP.NET Core 及其实现和 Azure App Service 的关键功能。要获取有关每个主题的更多信息的最佳场所,请访问 Microsoft 文档页面关于 ASP.NET Core。
学习愉快!如果对本文有任何改进意见,请在下方评论。