概述
大约 3 分钟
概述
参考资料
- 官方文档:https://learn.microsoft.com/zh-cn/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-7.0
基本概念
- ASP.NET Core 是.NET中做Web开发的框架, 包括依赖关系注入 (DI)、配置、中间件等
- ASP.NET Core MVC 和 ASP.NET Core Web API 是 ASP.NET Core 之上更高级的框架
- ASP.NET Core MVC:前后端没有完全分离,控制器由 Controller 类实现,视图一般是扩展名为 cshtml 的文件
- ASP.NET Core Web API:前后端分离、多端开发,只有控制器 Controller 类,仅仅为前端提供数据
- ASP.NET Core Web API 相对于 ASP.NET Core MVC 属于更流行的 Web 开发模式
- ASP.NET Core 运行过程:
- 运行时首先 WebApplicationBuilder 构建 WebApplication,完成 Configure 和 ConfigureServices 的初始化;
- 然后向 WebApplication 中添加中间件,在 ASP.NET Core中 HTTP请求是以中间件管道的形式进行处理
- 最后调用 app.Run()
前后端分离概念
- 传统 MVC 开发模式:
- 前后端的代码被放到同一个项目中,前端人员负责编写页面的模板,而后端开发人员负责编写控制器和模型的代码并且“套模板”。
- 缺点:互相依赖;耦合性强;责任划分不清。
- Web API开发模式:
- 前端开发人员和后端开发人员分别负责前端和后端代码的开发,各自在自己的项目中进行开发;后端人员只写Web API接口,页面由前端人员负责。
- 优点:独立开发,不互相依赖;耦合性低;责任划分清晰;前后端分别部署,可以针对性运维(扩容等)
- 缺点:对团队的沟通能力要求更高,提前沟通好接口和通知接口变更;不利于SEO(可以用“服务器端渲染 SSR);对运维要求更高。
Asp.NetCore 功能概述
- Program.cs :应用程序启动代码,本质上就是一个控制台程序,包括服务注册、中间件注册
- 主机 :
- .NET WebApplication 主机,也称为最小主机。
- .NET 通用主机 :和 .NET WebApplication 主机共享许多相同的接口和类
- ASP.NET Core Web 主机 :仅用于支持后向兼容性
- 服务器 :Kestrel 服务器是默认跨平台 HTTP 服务器实现。
- 依赖关系注入(服务) :
var builder = WebApplication.CreateBuilder(args);
- 框架会自动注册大量服务比如:
配置服务、日志服务、EF服务、Mvc服务
- 使用
WebApplicationBuilder.Services
进行注册其他服务,builder.Services.AddRazorPages();
- 中间件 :通过调用
Use{Feature}
扩展方法,向管道添加中间件组件。 - 配置 :在主程序启动时
var builder = WebApplication.CreateBuilder(args);
会默认加载配置文件 - 环境 :通过设置
ASPNETCORE_ENVIRONMENT
环境变量来指定应用的运行环境,该值存储在IWebHostEnvironment
实现中,通过依赖关系注入 (DI),可以在应用中任何位置获取运行环境。 - 日志 :通过依赖注入使用
ILogger<TCategoryName>
服务 - 路由 :映射到处理程序的 URL 模式
app.UseRouting();
- 错误处理 :https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/error-handling?view=aspnetcore-7.0
- HTTP 请求 :使用 IHttpClientFactory 发出 HTTP 请求
- 内容根 :在开发中,内容根目录默认为项目的根目录。
- Web 根 :样式表 、JavaScript 、图像等静态文件,默认路径 {content root}/wwwroot