ASP .Net Core进阶知识
1、什么是ASP.Net Core?它与ASP.Net Framework有何区别?
ASP.NET Core 是一个开源跨平台的开发框架,用于构建基于云的现代 Web 应用。ASP.Net Framework是基于windows且不跨平台。ASP.Net Framework一般是多用于开发窗体应用程序(核心代码开源,非核心代码慢慢在开源···),比如常用的基于framwork的框架wpf,window form,当然还有个ASP.Net框架也可以开发Web,但是仅仅也是支持windows平台,开发Web更多的是使用ASP.Net Core。后面2020年停止了ASP.Net Framework版本的迭代(但还在维护4.8.x版本),ASP.Net Core 更名成 .Net。
2、什么是中间件(Middleware)?ASP.Net Core中的中间件如何工作?
在ASP.NET Core中,中间件形成了一个请求处理管道,每个中间件可以处理请求、修改请求、处理响应。它们按序执行,同时可以决定将请求传递给管道中的下一个中间件
3、解释一下ASP.Net Core中的依赖注入的概念及其优点
与依赖注入相关联的是控制反转,控制反转是设计思想,依赖注入是控制反转的具体实现。通俗来讲就是将对象与对象的创建权、
对象与对象的依赖关系维护权交出去,它具体是通过一个容器来实现的。优点:降低耦合(类与类的关系)、简化代码
4、ASP.Net Core的配置系统是如何工作的?如何管理应用程序的设置?
ASP.Net Core的配置常用的有两种,一种是写在appsettings.json文件中,还有一种可以写在系统的环境变量中。另外配置的加载顺序
优先顺序加载,后加载的配置会覆盖之前的配置,比如appsettings.json、appsettings.json和环境变量三者,如果都配置了,最后使用的是环境变量中的配置
5、什么是路由?ASP.Net Core中的路由是如何工作的?
路由是将http请求的url地址映射到web程序中相应的控制器上。ASP.Net Core使用了路由中间件来处理,通常有两个,分别是
UseRouting(),UseEndpoints(),一般在UseEndpoints中去设定路由模式、如何解析url等
6、在ASP.Net Core中,如何实现身份验证与授权?
分为两步,一个是使用中间件,另一个是配置服务。中间件验证和授权分别是UseAuthentication()、UseAuthorization()。配置服务方面
验证和授权分别使用services.AddAuthentication()和services.AddAuthorization()去自定义策略,比如验证可以使用cookies或者jwt;授权策略
定义好之后需要在控制器上或方法上添加[Authorize]、[AllowAnonymous]属性
7、ASP.Net Core中的过滤器(Filters)是什么?它们如何使用?
过滤器是一种中间件机制,实现思想基于AOP。可以在方法执行前、执行后运行,比如常用的日志记录、异常处理。过滤器分为多种类型,授权过滤器、、
异常过滤器、操作过滤器等,比如说在控制器或方法上添加[Authorize]属性使用授权过滤器。也可以自定义过滤器,实现相应的接口比如IExceptionFilter、IActionFilter等
8、解释ASP.Net Core的MVC架构?
MVC是一种设计模式,将应用程序分为模型、视图、控制器三个组件。用户操作View,触发事件,事件被发送到Controller,Controller更新Model,Model更新后,通知View进行更新。
Model处理数据和业务逻辑,View负责展示和用户交互界面,Controller负责逻辑处理和流程控制
9、MVC和MVVM的主要区别是什么?
MVVM指的是模型-视图-视图模型。用户操作View触发事件,事件被发送到ViewModel,ViewModel更新Model,Model更新后,通过数据绑定通知ViewModel,
ViewModel再通知View进行更新。MVC适用于Web程序,MVVM常用于桌面或移动端程序,比如WPF。当然Blazor也具有MVVM的特性(双向绑定)
10、什么是视图组件(ViewComponent)?它与传统视图有什么区别?
视图组件是 ASP.NET Core 中一种用于处理视图逻辑的可重用组件。创建一个视图组件,新建一个继承自 ViewComponent 的类,比如 NavigationViewComponent。
区别:视图组件可以在多个视图中重用,并且不需要依赖特定的控制器上下文。传统视图通常与特定的控制器操作关联,重用性相对较低。
11、ASP.Net Core MVC中,controller、Model、View分别有什么区别?
用户操作View,触发事件,事件被发送到Controller,Controller更新Model,Model更新后,通知View进行更新。
Model处理数据和业务逻辑,View负责展示和用户交互界面,Controller负责逻辑处理和流程控制
12、MVVM (Model-View-ViewModel)在ASP.Net Core中的应用场景是什么?
MVVM 适用于ASP.NET Core Blazor 开发的客户端应用程序
13、如何在ASP.Net Core中使用Web API?
创建Web API项目; 添加模型(Model);创建控制器(Controller)
14、ASP.Net Core中的数据传输对象(DTO)是什么?它们的作用是什么?
DTO是用于在应用程序各层之间传输数据的对象,不包含业务逻辑,只用于封装
作用:①可以将多个类/实体的字段组合在一起,复用,减少代码冗余;②保护内部实体数据,通过DTO将数据暴露给前端
15、如何在ASP.Net Core配置缓存?
三种缓存,①内存缓存;ASP.NET Core 提供了一个IMemoryCache接口,用于实现内存缓存。配置services.AddMemoryCache();即可
②分布式缓存;常用的是Redis,services.AddStackExchangeRedisCache()配置;③响应缓存;添加缓存中间件UseResponseCaching(),还需要配置AddResponseCaching()
在控制器上添加[ResponseCache]属性
16、ASP.Net Core中如何防止跨站请求伪造(CSRF)攻击?
基于token可以解决因为浏览器使用已认证过的cookie恶意访问;在ASP.Net Core中使用AntiForgery中间件,在Razor视图中,使用@Html.AntiForgeryToken()生成 Token,通常放在表单内;
然后在控制器的处理方法上使用[ValidateAntiForgeryToken]属性
17、如何使用ASP.Net Core的CORS(跨域资源共享)功能?
设置CORS策略,使用services.AddCors(),可以给策略定义个名称,然后使用CORS中间件,传入刚刚自定义的策略名称。
也可以通过在控制器上使用[EnableCors(“”)]实现跨域





