第一章 必備知識
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