.NETCORE

IOC&DI&AOP

IOC控制反转:去掉依赖,方便扩展。【addsingleton】
DI依赖注入:构造A对象。能把A依赖的对象自动初始化,可以递归。【构造器注入】
AOP:面向切面编程,在不破坏封装的前提下去扩展功能,比如中间件或者特性(通过反射增强)
MVC中的AOP:
AOP的全局注册:
在Configuration中。通过

service.AddControllerWithView(
option=>option.Filters.Add(typeof(XXXFilterAttribute))
);

这种方式的是全局注册
或者通过特性的方式在方法和控制器上注册。则是方法注册和控制器注册
.NETCORE中的AOP,
1、【serviceFilter(typeof(CustomerFilterAttribute))】(特性)
但是必须在startup中需要

addScope(CustomerFilterAttribute);

2、TypeFilter

【serviceFilter(typeof(CustomerFilterAttribute))】

3、IfilterFactory
4、全局注册

Filter的执行顺序在这里插入图片描述

Middleware-》Authorization filter-》Resourcefilter-》Exception-》Model binding -》Actionfilter(before)-Action execution-Action filter(After)-》ResultFilter
Resultexecution
Resourcefilter只能在方法的前后拦截到而不能进入方法内部
我们可以通过基于接口的IOC以及AOP去增强Action内部。

曾经的HTTP请求

Http请求都在一个HttpApplication中。以观察者模式的方式把22个事件全部按照顺序排序下来。
基于观察者模式。httpmodule完成了灵活的扩展,但是pay -for -all,
我们需要灵活的扩展。还要按需付费。,,我们就需要自己组装。所以有了NETCORE
按需加载。需要什么我们就添加什么。

app.use(next=>{cw();
return async c=>{
await cw("2");
}})

startup

使用什么中间件以及什么顺序使用
ConfigureService
用来注册服务

addSingleton<IXX,XX>();//单例模式(生命周期只有一个)
addTransient<IXX,XX>();//(每次一个请求都有一个新的)
addScoped<IXX,XX>();//(每次Web请求一个实例)

Configure
只运行一次。
配置相关的中间件。
app.useXXX();
HTTP请求处理的管道
ASP.NET Core 中间件的配置方法可以分为以上三种,对应的Helper方法分别是:Run(), Use(), Map()。

Run(),使用Run调用中间件的时候,会直接返回一个响应,所以后续的中间件将不会被执行了。
Use(),它会对请求做一些工作或处理,例如添加一些请求的上下文数据,有时候甚至什么也不做,直接把请求交给下一个中间件。
Map(),它会把请求重新路由到其它的中间件路径上去。
实际中呢,Use()这个helper方法用的最多。

program.cs

main方法的进入口
默认UseKestrel

IConfiguration接口

配置来源:
优先级从上到下。一级一级的加载。来覆盖之前的信息

  • 命令行参数
  • 环境变量(系统)
  • User Secrets
  • appsetting.*.json
  • appsetting.json

管道和中间件

在这里插入图片描述

MVC

addmvc()在startup类的ConfigureService来注册mvc服务
usemvc()在startup类的Configure来使用MVC服务
在这里插入图片描述

路由Routing

Conventional Routing:按照约定进行路由
Attribute Routing:按照属性标签进行路由

Controller

IActionResult:决定返回给什么值、决定做什么事和真正做什么事情是分开的,会更加灵活。

XSS

不被信任的数据
html input
http headers
queryString
Attributes
防止XSS:
对HTML进行encoding
正则表达式
XSS第三方库
验证请求

CSRF

跨站请求
Header验证
同步令牌模式
双重提交cookie
【ValidateAntiForgeryToken】ASP.NETCORE默认
【AutoValidateAntiForgeryToken】All POST
【ValidateAntiForgeryToken】跳过某个请求

Binding来源

FromBody:RequestBodys
FromQuery:QueryString
FromHeader:REquestHeader
FromRoute
FromFrom

自定义验证

新建一个类然后继承Attribute 和IModelValidator两个,然后实现Validate这个方法
在这里插入图片描述
Remote远程验证

诊断中间件

UseDeveloperExceptionPage:返回错误信息
UseStatusCodePages:返回错误状态码(400-600)
UseExceptionHandler:返回自定义的错误页面
UseWelcode:返回欢迎页面

Filter

在这里插入图片描述
种类:
授权、资源、Action、异常、Result

实现
在这里插入图片描述
执行顺序
在这里插入图片描述

缓存

IMemoryCache(内存缓存)
StickSession,只能单机使用
分布式缓存(IDestributedCache)
RedisCache
RESPONSE缓存
基于Header
客户端缓存
使用REsponseCache这个Attribute

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值