.net core开发实战(转)
第一章 必备知识
04.StartUp:启动过程:
ConfigureWebHostDefaults
ConfigureHostConfiguration
ConfigureAppConfiguration
ConfigureServices
ConfigureLogging
Startup
Startup.ConfigureServices
Startup.Configure
05.依赖注入
生命周期:
1.单例 Singleton 全局
2.作用域 Scoped : 每一个请求内实例一致,不同请求不一致
3.瞬时,暂时 Transient
06.作用域与对象释放行为:
避免在根容器获取实现了 IDisposable 接口的瞬时服务
避免手动创建实现了 IDisposable 对象,应该使用容器来管理其生命周期
07.Autofac
• 基于名称的注入
• 属性注入
• 子容器
• 基于动态代理的 AOP
08.配置框架
15.选项框架
16.选项框架.热更新
• 范围作用域类型使用 IOptionsSnapshot
• 单例服务使用 IOptionsMonitor
20.结构化日志组件serilog
22.异常处理中间件:区分真异常和逻辑异常
第二章 微服务实战篇
26.工程结构概览
领域模型层 基础设施层 应用层 共享层
27.定义实体
28.工作单元模式
29.定义仓储
30.领域事件
31.APIController
32.33.集成事件
34.35.MediatR
36.HttpClientFactory:向外请求的最佳实践
37.38 gRPC:内部服务间通讯利器
39.Polly:用失败重试机制提升服务可用性
• 失败重试
• 服务熔断
• 超时处理
• 舱壁隔离
• 缓存策略
• 失败降级
• 组合策略
40.Polly:熔断慢请求避免雪崩效应
• 被动策略(异常处理、结果处理)
• 主动策略(超时处理、断路器、舱壁隔离、缓存)
41.网关与BFF(区分场景与职责)
BFF:服务于前端的后端 Ocelot
42.网关与BFF(使用JWT来实现身份认证与授权)
JWT:JSON Web Token
43.反跨站请求伪造
1. 通过cookie存储和传递身份信息(不用cookie,用jwt)
2. AntiforgeryToken 来防御
3. 避免使用get
44.防开放重定向攻击
1.使用localredirect来处理重定向(仅限于本站)
2.验证重定向的目标域名是否合法
45.防跨站脚本
对用户提交进行验证,编码;cookie设置为httponly;使用query传递
46.安全:跨域请求
1. 方案相同 ( HTTP/HTTPS ) 2. 主机(域名)相同 3. 端口相同
47.缓存:为不同的场景设计不同的缓存策略
缓存失效:数据不一致
缓存穿透:缓存不存在数据,(缓存数据为null,强制返回一个默认值)
缓存击穿:缓存失效瞬间,大量缓存访问数据库(二级缓存)
缓存雪崩:缓存key大量失效,导致数据库压力(缓存失效时间均匀分布)
MemoryCache,StackExchangeRedisCache,ResponseCaching(与身份认证冲突),EasyCaching