.NET Core 学习资料精选:进阶
2019.09月就要正式發(fā)布.NET 3.0了,對于前一篇博文《.NET Core 學習資料精選:入門》大家學的可還開心?這是本系列的第二篇文章:進階篇,喜歡的園友速度學起來啊。
對于還在使用傳統(tǒng).NET Framework?框架的園友,可以通過《.NET項目遷移到.NET Core操作指南》把需要新生力量的舊項目速度遷移到.NET Core?中
本系列文章,主要分享一些.NET Core比較優(yōu)秀的社區(qū)資料和微軟官方資料。我進行了知識點歸類,讓大家可以更清晰的學習.NET Core。
首先感謝資料原作者的貢獻。
第一篇:.NET Core 學習資料精選:入門
? ? 介紹.NET歷史、開源之路、基礎(chǔ)、路由、依賴注入、HttpContext、cookie|session、HttpClient、gRPC、單元測試、發(fā)布部署等等。
第二篇:.NET Core?學習資料精選:進階
? ? 介紹.NET工程化、AOP、異常處理、緩存、日志、響應優(yōu)化、上傳下載、健康檢查、后臺任務、認證和授權(quán)、安全性(Https、CORS、CSRF)、EF Core?等等
第三篇:.NET Core?學習資料精選:高級&微服務架構(gòu)
? ? 介紹性能、原理、微服務架構(gòu)、DDD等知識
這是第二篇,知識點如圖:
? ?
.NET?工程化
#、StyleCop編碼規(guī)范
StyleCop規(guī)則匯總
在VS2017中使用StyleCop
netcore將StyleCop.Analyzers自定義規(guī)則應用到整個解決方案
#、Nuget包
安裝NuGet 客戶端工具
NuGet.Server
發(fā)布包
承載自己的NuGet 源
Nuget管理工具BaGet使用教程
Nuget管理工具FuGet使用教程
#、Swagger Api文檔
Swagger 規(guī)范 (swagger.json)
Swagger+AutoRest 生成web api客戶端(.Net)
Swashbuckle方式
Asp.Net Core 使用Swagger生成API文檔并添加API分組
Asp.Net Core 使用Swagger生成API文檔并添加文檔描述、響應類型描述
NSwag方式
Asp.Net Core 使用NSwag生成Swagger Api文檔
AOP面向切面編程
AOP(Aspect-Oriented Programming)是一種將函數(shù)的輔助性功能與業(yè)務邏輯相分離的編程范式(programming paradigm),其目的是將橫切關(guān)注點(cross-cutting concerns)分離出來,使得程序具有更高的模塊化特性。
AOP體現(xiàn)原則:單一職責原則 和 開放封閉原則
在ASP.NET Core中可使用三種方式實現(xiàn)AOP:中間件Middleware、過濾器Filter、代碼織入(靜態(tài)織入和動態(tài)代理)
#、中間件Middleware
中間件就是嵌入到應用管道中用于處理請求和響應的一段代碼,ASP.NET Core?中使用了大量的中間件。eg:全局異常、路由、響應緩存、響應壓縮、身份認證、CORS、日志記錄等等
??????
??????ASP.NET Core Middleware 的實現(xiàn)(Conventional Middleware 和IMiddleware)
????? ASP.NET Core Middleware?的實現(xiàn)(Run,Map,Use,內(nèi)置中間件)
??????【機翻】?【人工翻譯】
#、過濾器Filter
??????
??????ASP.NET Core 被低估的過濾器
??????ASP.NET Core MVC Filter的定義、注冊和各種Filter執(zhí)行順序
#、代碼織入
l??編譯時靜態(tài)織入
框架:PostSharp、Fody
特點:[編譯型]性能高,缺點是缺乏靈活性
實現(xiàn)思想:給語言的編譯器做擴展,使得在編譯程序的時候編譯器將相應的Aspect代碼織入到業(yè)務代碼的指定連接點,輸出整合的結(jié)果。
l??運行時動態(tài)織入(動態(tài)代理)
框架:Castle DynamicProxy,
特點:[運行時動態(tài)代理]靈活性高,性能相對“靜態(tài)織入”低
實現(xiàn)方式:將擴展添加到運行虛擬機而不是編譯器。Aspect和業(yè)務代碼分別獨立編譯,而在運行時由虛擬機在必要時進行織入。
.Net AOP代碼織入介紹
.Net AOP代碼織入實現(xiàn)類型及原理(靜態(tài)、動態(tài)、優(yōu)缺點)
.Net AOP代碼織入之《攔截方法》(包含案例:數(shù)據(jù)事物、多線程)
.Net AOP代碼織入之《單元測試切面》
.Net AOP代碼織入之《案例:構(gòu)建一個汽車租賃應用》
演示了清晰的業(yè)務代碼,因為非功能性需求(eg:logging,防御性編程,事務,重試,和異常處理等)導致代碼變得冗長、難懂、不易維護。通過使用AOP來讓業(yè)務代碼重新清晰化
.NET Core 原生DI+AOP實現(xiàn)注解式編程
.NET Core 泛型倉儲和聲明式事物實現(xiàn)最優(yōu)雅的crud操作
異常處理
Restful API 中的錯誤處理設計
ASP.NET Core 應用的錯誤處理[1]:三種呈現(xiàn)錯誤頁面的方式
使用UseStatusCodePages 根據(jù)Status選擇處理方式(跳轉(zhuǎn)頁面)
ASP.NET Core 自定義ErrorHandlingMiddleware 全局異常捕獲
緩存
.NET Core 緩存使用、配置、依賴策略
.NET Core MemoryCache 緩存過期策略(絕對、滑動、依賴、過期回調(diào))
ASP.NET Core 使用分布式緩存(redis、sqlserver)
windows redis安裝和設置密碼
ASP.NET Core 使用RedLock.net 實現(xiàn)分布式鎖
日志
玩轉(zhuǎn)ASP.NET Core 中的日志組件
[github]ASP.NET Core Microsoft.Extensions.Logging 默認log組件
ASP.NET Core 中使用Nlog 記錄日志
在ASP.NET Core 中使用Serilog 進行日志記錄
ASP.NET Core 中使用log4net 記錄日志
分布式日志
? ? ??.NET Core中使用Exceptionless分布式日志框架
? ? ??.NET Core 快速搭建Docker-ELK分布式日志中心
響應優(yōu)化
在ASP.NET Core 中的響應壓縮
ASP.NET Core 中使用ResponseCache 響應緩存
上傳下載
ASP.NET Core 中的文件上傳(IFormFile)、流式處理上傳大文件
ASP.NET Core 下載斷點續(xù)傳
健康檢查
ASP.NET Core 中的運行狀況檢查(IHealthCheck)
[github]ASP.NET Core HealthChecks(健康檢查,異常webhooks通知)
使用案例:
使用ASP.NET Core實現(xiàn)Docker的HealthCheck指令
Kubernetes liveness and readiness probes using HealthChecks
其他特性
#、對象池ObjectPool
.NET Core 中Object Pool的簡單使用
#、WebHooks
ASP.NET Webhook 概述
WebHooks with ASP.NET Core – DropBox and GitHub
后臺任務
基礎(chǔ)知識
服務宿主是IIS,需要注意IIS的回收策略對后臺任務的影響
Cron表達式
cron表達式在線生成
ASP.NET Core 中使用托管服務實現(xiàn)后臺任務(后臺任務、作用域任務、隊列任務)
.NET Core 3.0 創(chuàng)建Windows服務項目(BackgroundService)
使用Topshelf 創(chuàng)建Windows 服務
#、Hangfire(5024 stars)
????? 特點:不需要Windows服務或單獨的進程
ASP.NET Core 中使用Hangfire任務管理(含Dashboard)
Hangfire 授權(quán)、自定義路由、只讀Dashboard、多數(shù)據(jù)庫源、設置主應用
Hangfire 隊列任務、計劃任務、周期性任務
ASP.NET Core 中使用Hangfire.Redis.StackExchange存儲
ASP.NET Core 中Hangfire.Cronos 結(jié)合BackgroundService 實現(xiàn)任務調(diào)度
使用Hangfire.HttpJob實現(xiàn)調(diào)度與業(yè)務分離
使用ASP.NET Core和Hangfire實現(xiàn)HTTP異步化方案
#、Quartz.NET(3404 stars)
Quartz.Net幾種部署模式(IIS、Exe、服務部署【借助TopSelf、服務類】)
ASP.NET Core2.2+Quartz.Net 實現(xiàn)web定時任務
Quartz.NET 配置文件詳解(quartz.config 和quartz_jobs.xml)
----quartz.config可以合并到App.config和Web.config中
quartz.net 3.x版本如何通過xml文件進行Job配置
CrystalQuartz
配置Quartz.NET Cluster以及遠程管理(CrystalQuartz)
Quartz.NET 可視化Job管理(CrystalQuartz)
CrystalQuartz 在線 Demo
認證和授權(quán)
#、ASP.NET Core Identity身份認證
命名空間:Microsoft.AspNetCore.Identity
ASP.NET Core Identity框架簡介
創(chuàng)建完整的ASP.NET Core Identity基架(多圖)
ASP.NET Core Identity配置(聲明類型、鎖定策略、密碼策略、登錄策略等等)
ASP.NET Core 中注冊確認電子郵件和重置密碼
ASP.NET Core Identity身份驗證支持OAuth2第三方驗證提供程序
ASP.NET Core Identity中自定義模型
ASP.NET Core Idendity自定義存儲提供程序(Azure表存儲、Dapper)
#、基于Cookie的身份認證
命名空間:Microsoft.AspNetCore.Authentication.Cookies
ASP.NET Core中使用Cookie身份驗證
ASP.NET Core Cookie身份驗證支持OAuth2第三方驗證提供程序
#、授權(quán)
命名空間:Microsoft.AspNetCore.Authorization
ASP.NET Core 簡單授權(quán)
ASP.NET Core 基于角色的授權(quán)
ASP.NET Core 基于聲明的授權(quán)
ASP.NET Core 基于策略的授權(quán)
ASP.NET Core 自定義授權(quán)提供程序
ASP.NET Core web api基于JWT自定義策略授權(quán)
#、IdentityServer4?認證授權(quán)
[阮一峰]理解OAuth 2.0
[曉晨Master]IdentityServer4 中文文檔與實戰(zhàn)
[免費視頻]IdentityServer教程視頻
安全性
檢查HTTP Header 是否安全
.NET項目安全設置向?qū)?/p>
ASP.NET Core 在強制實施 HTTPS
#、CORS
跨域資源共享CORS 詳解
ASP.NET Core 中啟用跨域請求 (CORS)
#、CSRF
淺談CSRF攻擊方式
SameSite Cookie,防止CSRF 攻擊
ASP.NET Core 防止跨站點請求偽造(XSRF/CSRF) 攻擊
ASP.NET Core WebAPI 中防御跨站請求偽造攻擊(CSRF)
ASP.NET Core 啟用客戶端IP 安全列表
EF Core
EF Core 微軟官網(wǎng)教程(非常全)
Linq入門詳解(Linq to Objects)
3分鐘了解數(shù)據(jù)庫事務(ACID、事務隔離級別)
EF Core DbFirst:從數(shù)據(jù)庫生成實體類(反向工程)
EF Core CodeFirst:從實體創(chuàng)建新數(shù)據(jù)庫
EF Core CodeFirst:實體修改后遷移數(shù)據(jù)庫架構(gòu)
EF Core 啟用SQL日志記錄
模型配置
EF Core 實體類型、查詢類型、數(shù)據(jù)注解、Fluent API
EF Core 自動生成值配置
EF Core 實體間關(guān)系
EF Core 生成跟蹤列(eg:CreatedAt,CreatedBy等列)
并發(fā)
EF Core 并發(fā)檢查
EF Core 并發(fā)沖突處理
數(shù)據(jù)查詢
EF Core 關(guān)聯(lián)數(shù)據(jù)加載策略(預先記載、顯示加載、延遲加載)
EF Core 跟蹤與非跟蹤查詢
EF Core 全局查詢篩選器(軟刪除、多租戶等)
EF Core 使用like 函數(shù)實現(xiàn)模糊查詢
批量數(shù)據(jù)操作
[收費]使用Entity Framework Extensions 實現(xiàn)批量增、刪、改
[免費]Entity Framework Extensions 提供功能縮減版:EntityFramework-Plus
EF Core 執(zhí)行SQL語句和存儲過程
????? 看完”入門”和”進階”兩篇文章,對.NET Core的常用特性基本是掌握了的。接下來的”高級”篇,會介紹性能、原理、微服務架構(gòu)、DDD等知識,不過這篇文章會過幾個月整理出,中間打算研究一些開源框架,并分享給大家。
原文鏈接:https://www.cnblogs.com/heyuquan/p/dotnet-advance-learning-resource.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的.NET Core 学习资料精选:进阶的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core on K8S深
- 下一篇: VS Code 1.38 发布!