11月core学习笔记

假如你是一个架构的搭建者,该如何设计web框架
背景:一个httpcontext,里面有request信息
 
asp.net管道事件
因为有多个固定步骤,每个步骤前后都可能要扩展动作,把动作前后分辨添加事件,支持动作注册
 
注册动作后,请求进来时,就会按照顺序执行事件(注册的动作就执行了)
 
以此完成扩展性设计
 
管道模型的本质
 
httprequest==》httpresponse
httpcontext==》action
管道的本质就是一个方法,接收httpcontext,然后去执行一些动作
 
 
requestdelegate
接收一个httpcontext
 
 
1、confige
1)是一张白纸,没有内置任何东西,要什么写什么 pay-for-what-you-use
2)扩展比较容易
 
 
##############################################################
 
why IOC
 
1、可以去掉对细节的依赖,方便扩展
减少影响范围,甚至转移到配置文件依赖,只需要改配置文件
2、可以做到屏蔽细节,对象依赖注入(DI)
 
DI依赖注入:是实现IOC的手段
构造对象时,能自动把一拉的对象生成并传入 支持递归无限级
这种技术手段就叫做依赖注入
 
 
更好的解耦
 
 
 
表示层
IBLL
业务逻辑层 依赖注入 IOC DI
IDAL
数据访问层
 
调用
 
数据源 实体类 辅助类
 
##############################################################
 
ServiceCollection 内置在asp.netcore的全新的容器
 
容器除了能生成对象,还能做很多其他事情
 
AddTransient 瞬时生命周期 即时构造
AddSingleton 单例 全程唯一
AddScoped 作用域单例 容器实例单例
没有线程单例
 
 
1、单例很好?
不建议太多的单例
配置文件
链接池
 
2、瞬时容器
 
3、请求单例--一次http请求就是一个实例
这说明一次请求会创建一个容器
 
比如事务 主要是适用于一次请求只需要一个对象,不同请求需要不同的对象

 

AOP面向切面编程
在不破坏封装的前提下,去额外的扩展功能
 
1、聚焦业务逻辑,轻松扩展功能
2、代码复用,集中管理
 
 
 
面向切面编程-Filter
1、Autorization Filter
2、Resource Filter
3、Action Filter
4、Exception Filter
5、Result Filter
 
 
程序运行
 
dotnet 项目.dll --urls="http://*:5000" --ip="127.0.0.1" --port=5000

posted @ 2020-12-18 15:26  hangxing.pang  阅读(78)  评论(0编辑  收藏  举报