ASP.NET Core MVC Web应用开发与部署

在探索ASP.NET CoreMVCWeb应用开发与部署的过程中,会发现它与ASP.NET有许多相似之处,但同时也引入了一些新的概念和改进。本文将详细介绍如何创建一个基本的ASP.NET Core MVC Web应用,以及如何构建和部署到Azure应用服务。

ASP.NET Core与ASP.NET框架

在开始学习ASP.NET Core之前,曾认为它与ASP.NET完全不同,需要从头开始学习。但学习之后,发现这种假设是错误的。ASP.NET Core与ASP.NET在请求处理流程上非常相似,但ASP.NET Core允许自定义应用程序的请求处理流程,而ASP.NET框架则提供了预定义的请求处理流程。

ASP.NET Core应用的起点

ASP.NET Core应用的起点是Main方法。创建一个空白的ASP.NET Core应用时,默认会添加Program.csStartup.cs文件。这两个文件是应用中的关键文件。

Program.cs文件类似于典型的控制台应用程序文件,它是一个默认文件,其中包含一个Main方法。Main方法中包含了BuildWebHost方法的实现,该方法负责配置Web服务器和应用流程的其他重要组件,并且可以根据需求进行自定义。

Startup.cs文件是另一个重要的类文件,它包含两个默认方法:ConfigureServicesConfigure方法。

ConfigureServices方法由运行时调用。使用此方法可以向容器添加服务,并且可以在解决方案的任何地方访问。通过这个方法,可以看到ASP.NET Core如何简化依赖注入(DI)的强大功能。

Configure方法用于注册中间件。中间件是组装到应用流程中的软件,用于处理请求和响应。每个组件可以选择是否将请求传递给流程中的下一个组件,也可以在调用下一个组件之前和之后执行工作。

Razor Pages

Razor Pages是ASP.NET CoreMVC的一个新特性,它使得编码页面为中心的场景变得更加容易和高效。Razor Pages是创建HTML页面的首选机制,而MVC控制器则用于创建Web API和RESTful服务。

设置主机

与ASP.NET不同,ASP.NET Core可以在包括Windows、Linux和macOS在内的各种机器上托管。无论在哪种机器上,Kestrel都是托管应用的Web服务器。有两种不同的主机API可用于使用:

  • WebHost - 适用于托管Web应用
  • Generic Host - 适用于托管非Web应用

ASP.NET Core应用配置并启动一个主机。主机负责应用的启动和生命周期管理。使用IWebHostBuilder实例创建主机。这通常在应用的入口点,即Main方法中执行。在项目模板中,Main方法是Program.cs文件的一部分。

创建Azure应用服务

Azure应用服务使能够构建和托管Web应用、移动后端和RESTful API,而无需管理基础设施。它提供自动缩放和高可用性,支持Windows和Linux,并支持从GitHub、Azure DevOps或任何Git仓库自动部署。

登录到Azure门户,使用自己的凭据。选择应用服务 -> 点击添加 -> 从市场选择Web应用-> 创建。填写以下信息:

  • 选择应用服务计划,根据环境和所需功能选择。标准层将包括基本功能,包括交换部署槽的选项。

创建应用服务后,资源组将如下所示:

  • 在初始Web创建后,将添加Application Insights、应用服务和应用服务计划。
  • 默认的应用服务aspdotnetcoreweb是默认的生产环境。

当浏览URL时,默认首页会显示。稍后将把ASP.NET Core Web应用部署到这个URL。

构建和部署到Azure应用服务

有多种选项可以将应用部署到Azure应用服务。以下是将ASP.NET Core应用部署到Azure应用服务的选项列表。

设置构建管道,以便在代码提交到GitHub仓库时自动开始构建,使用Azure管道。要了解如何设置Azure构建管道,请参考这篇文章。与该文章的不同之处在于,在选择合适的模板时,选择ASP.NET Core模板作为构建模板,而不是.NET桌面模板。

构建成功后,将应用部署到开发槽,第一个ASP.NET Core应用已部署到开发环境,因为选择了开发槽作为部署目标。

交换槽到生产环境

在开发环境中验证应用后,如果验证成功,则将开发槽移动到生产环境。现在应用已部署到生产环境。使用Microsoft Azure应用服务交换部署槽到生产环境非常简单,零停机时间。这是Microsoft Azure应用服务的一大特点。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485