在探索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应用的起点是Main
方法。创建一个空白的ASP.NET Core应用时,默认会添加Program.cs
和Startup.cs
文件。这两个文件是应用中的关键文件。
Program.cs
文件类似于典型的控制台应用程序文件,它是一个默认文件,其中包含一个Main
方法。Main
方法中包含了BuildWebHost
方法的实现,该方法负责配置Web服务器和应用流程的其他重要组件,并且可以根据需求进行自定义。
Startup.cs
文件是另一个重要的类文件,它包含两个默认方法:ConfigureServices
和Configure
方法。
ConfigureServices
方法由运行时调用。使用此方法可以向容器添加服务,并且可以在解决方案的任何地方访问。通过这个方法,可以看到ASP.NET Core如何简化依赖注入(DI)的强大功能。
Configure
方法用于注册中间件。中间件是组装到应用流程中的软件,用于处理请求和响应。每个组件可以选择是否将请求传递给流程中的下一个组件,也可以在调用下一个组件之前和之后执行工作。
Razor Pages是ASP.NET CoreMVC的一个新特性,它使得编码页面为中心的场景变得更加容易和高效。Razor Pages是创建HTML页面的首选机制,而MVC控制器则用于创建Web API和RESTful服务。
与ASP.NET不同,ASP.NET Core可以在包括Windows、Linux和macOS在内的各种机器上托管。无论在哪种机器上,Kestrel都是托管应用的Web服务器。有两种不同的主机API可用于使用:
ASP.NET Core应用配置并启动一个主机。主机负责应用的启动和生命周期管理。使用IWebHostBuilder
实例创建主机。这通常在应用的入口点,即Main
方法中执行。在项目模板中,Main
方法是Program.cs
文件的一部分。
Azure应用服务使能够构建和托管Web应用、移动后端和RESTful API,而无需管理基础设施。它提供自动缩放和高可用性,支持Windows和Linux,并支持从GitHub、Azure DevOps或任何Git仓库自动部署。
登录到Azure门户,使用自己的凭据。选择应用服务 -> 点击添加 -> 从市场选择Web应用-> 创建。填写以下信息:
创建应用服务后,资源组将如下所示:
当浏览URL时,默认首页会显示。稍后将把ASP.NET Core Web应用部署到这个URL。
有多种选项可以将应用部署到Azure应用服务。以下是将ASP.NET Core应用部署到Azure应用服务的选项列表。
设置构建管道,以便在代码提交到GitHub仓库时自动开始构建,使用Azure管道。要了解如何设置Azure构建管道,请参考这篇文章。与该文章的不同之处在于,在选择合适的模板时,选择ASP.NET Core模板作为构建模板,而不是.NET桌面模板。
构建成功后,将应用部署到开发槽,第一个ASP.NET Core应用已部署到开发环境,因为选择了开发槽作为部署目标。
在开发环境中验证应用后,如果验证成功,则将开发槽移动到生产环境。现在应用已部署到生产环境。使用Microsoft Azure应用服务交换部署槽到生产环境非常简单,零停机时间。这是Microsoft Azure应用服务的一大特点。