1. 程式人生 > >.NET Core 學習資料精選:進階

.NET Core 學習資料精選:進階

 

.NET 3.0 2019.09月就要正式釋出了,對於前一篇博文《.NET Core 學習資料精選:入門》大家學的可還開心?這是本系列的第二篇文章:進階篇,喜歡的園友速度學起來啊。

對於還在使用傳統.NET Framework 框架的園友,可以通過《.NET專案遷移到.NET Core操作指南》把需要新生力量的舊專案速度遷移到.NET Core 中

 

本系列文章,主要分享一些.NET Core比較優秀的社群資料和微軟官方資料。我進行了知識點歸類,讓大家可以更清晰的學習.NET Core。

首先感謝資料原作者的貢獻。

第一篇:.NET Core 學習資料精選:入門

    介紹.NET歷史、開源之路、基礎、路由、依賴注入、HttpContext、cookie|session、HttpClient、gRPC、單元測試、釋出部署等等。

第二篇:.NET Core 學習資料精選:進階

    介紹.NET工程化、AOP、異常處理、快取、日誌、響應優化、上傳下載、健康檢查、後臺任務、認證和授權、安全性(Https、CORS、CSRF)、EF Core 等等

第三篇:.NET Core 學習資料精選:高階&微服務架構

    介紹效能、原理、微服務架構、DDD等知識

 

這是第二篇,知識點如圖:

 

 

 

.NET 工程化

#、StyleCop編碼規範

StyleCop規則彙總

在VS2017中使用StyleCop

netcore將StyleCop.Analyzers自定義規則應用到整個解決方案

 

#、Nuget包

安裝NuGet 客戶端工具

NuGet.Server

釋出包

承載自己的NuGet 源

Nuget管理工具BaGet使用教程

Nuget管理工具FuGet使用教程

 

#、Swagger Api文件

Swagger 規範 (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)是一種將函式的輔助性功能與業務邏輯相分離的程式設計正規化(programming paradigm),其目的是將橫切關注點(cross-cutting concerns)分離出來,使得程式具有更高的模組化特性。

AOP體現原則:單一職責原則 和 開放封閉原則

在ASP.NET Core中可使用三種方式實現AOP:中介軟體Middleware、過濾器Filter、程式碼織入(靜態織入和動態代理)

 

#、中介軟體Middleware

中介軟體就是嵌入到應用管道中用於處理請求和響應的一段程式碼,ASP.NET Core 中使用了大量的中介軟體。eg:全域性異常、路由、響應快取、響應壓縮、身份認證、CORS、日誌記錄等等

     

      ASP.NET Core Middleware 的實現(Conventional Middleware 和IMiddleware)

      ASP.NET Core Middleware 的實現(Run,Map,Use,內建中介軟體)

      【機翻】 【人工翻譯】

 

#、過濾器Filter

     

      ASP.NET Core 被低估的過濾器

      ASP.NET Core MVC Filter的定義、註冊和各種Filter執行順序

 

#、程式碼織入

l  編譯時靜態織入

框架:PostSharp、Fody

特點:[編譯型]效能高,缺點是缺乏靈活性

實現思想:給語言的編譯器做擴充套件,使得在編譯程式的時候編譯器將相應的Aspect程式碼織入到業務程式碼的指定連線點,輸出整合的結果。

l  執行時動態織入(動態代理)

框架:Castle DynamicProxy,

特點:[執行時動態代理]靈活性高,效能相對“靜態織入”低

實現方式:將擴充套件新增到執行虛擬機器而不是編譯器。Aspect和業務程式碼分別獨立編譯,而在執行時由虛擬機器在必要時進行織入。

 

.Net AOP程式碼織入介紹

.Net AOP程式碼織入實現型別及原理(靜態、動態、優缺點)

.Net AOP程式碼織入之《攔截方法》(包含案例:資料事物、多執行緒)

.Net AOP程式碼織入之《單元測試切面》

.Net AOP程式碼織入之《案例:構建一個汽車租賃應用》

演示了清晰的業務程式碼,因為非功能性需求(eg:logging,防禦性程式設計,事務,重試,和異常處理等)導致程式碼變得冗長、難懂、不易維護。通過使用AOP來讓業務程式碼重新清晰化

.NET Core 原生DI+AOP實現註解式程式設計

 

異常處理

Restful API 中的錯誤處理設計

ASP.NET Core 應用的錯誤處理[1]:三種呈現錯誤頁面的方式

使用UseStatusCodePages 根據Status選擇處理方式(跳轉頁面)

ASP.NET Core 自定義ErrorHandlingMiddleware 全域性異常捕獲

 

快取

.NET Core 快取使用、配置、依賴策略

.NET Core MemoryCache 快取過期策略(絕對、滑動、依賴、過期回撥)

ASP.NET Core 使用分散式快取(redis、sqlserver)

windows redis安裝和設定密碼

ASP.NET Core 使用RedLock.net 實現分散式鎖

 

日誌

玩轉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分散式日誌收集框架

 

響應優化

在ASP.NET Core 中的響應壓縮

ASP.NET Core 中使用ResponseCache 響應快取

 

上傳下載

ASP.NET Core 中的檔案上傳(IFormFile)、流式處理上傳大檔案

ASP.NET Core 下載斷點續傳

 

健康檢查

ASP.NET Core 中的執行狀況檢查(IHealthCheck)

[github]ASP.NET Core HealthChecks(健康檢查,異常webhooks通知)

使用案例:

使用ASP.NET Core實現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

 

後臺任務

基礎知識

服務宿主是IIS,需要注意IIS的回收策略對後臺任務的影響

Cron表示式

cron表示式線上生成

ASP.NET Core 中使用託管服務實現後臺任務(後臺任務、作用域任務、佇列任務)

.NET Core 3.0 建立Windows服務專案(BackgroundService)

使用Topshelf 建立Windows 服務

#、Hangfire(5024 stars)

      特點:不需要Windows服務或單獨的程序

ASP.NET Core 中使用Hangfire任務管理(含Dashboard)

Hangfire 授權、自定義路由、只讀Dashboard、多資料庫源、設定主應用

Hangfire 佇列任務、計劃任務、週期性任務

ASP.NET Core 中使用Hangfire.Redis.StackExchange儲存

ASP.NET Core 中Hangfire.Cronos 結合BackgroundService 實現任務排程

使用Hangfire.HttpJob實現排程與業務分離

使用ASP.NET Core和Hangfire實現HTTP非同步化方案

#、Quartz.NET(3404 stars)

Quartz.Net幾種部署模式(IIS、Exe、服務部署【藉助TopSelf、服務類】)

ASP.NET Core2.2+Quartz.Net 實現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

 

認證和授權

#、ASP.NET Core Identity身份認證

名稱空間:Microsoft.AspNetCore.Identity

ASP.NET Core Identity框架簡介

建立完整的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第三方驗證提供程式

#、授權

名稱空間:Microsoft.AspNetCore.Authorization

ASP.NET Core 簡單授權

ASP.NET Core 基於角色的授權

ASP.NET Core 基於宣告的授權

ASP.NET Core 基於策略的授權

ASP.NET Core 自定義授權提供程式

ASP.NET Core web api基於JWT自定義策略授權

#、IdentityServer4 認證授權

[阮一峰]理解OAuth 2.0

[曉晨Master]IdentityServer4 中文文件與實戰

[免費視訊]IdentityServer教程視訊

 

安全性

檢查HTTP Header 是否安全

.NET專案安全設定嚮導

ASP.NET Core 在強制實施 HTTPS

#、CORS

跨域資源共享CORS 詳解

ASP.NET Core 中啟用跨域請求 (CORS)

#、CSRF

SameSite Cookie,防止CSRF 攻擊

ASP.NET Core 防止跨站點請求偽造(XSRF/CSRF) 攻擊

ASP.NET Core WebAPI 中防禦跨站請求偽造攻擊(CSRF)

ASP.NET Core 啟用客戶端IP 安全列表

 

EF Core

EF Core 微軟官網教程(非常全)

Linq入門詳解(Linq to Objects)

3分鐘瞭解資料庫事務(ACID、事務隔離級別)

EF Core DbFirst:從資料庫生成實體類(反向工程)

EF Core CodeFirst:從實體建立新資料庫

EF Core CodeFirst:實體修改後遷移資料庫架構

EF Core 啟用SQL日誌記錄

模型配置

EF Core 實體型別、查詢型別、資料註解、Fluent API

EF Core 自動生成值配置

EF Core 實體間關係

EF Core 生成跟蹤列(eg:CreatedAt,CreatedBy等列)

併發

EF Core 併發檢查

EF Core 併發衝突處理

資料查詢

EF Core 關聯資料載入策略(預先記載、顯示載入、延遲載入)

EF Core 跟蹤與非跟蹤查詢

EF Core 全域性查詢篩選器(軟刪除、多租戶等)

EF Core 使用like 函式實現模糊查詢

批量資料操作

[收費]使用Entity Framework Extensions 實現批量增、刪、改

[免費]Entity Framework Extensions 提供功能縮減版:EntityFramework-Plus

EF Core 執行SQL語句和儲存過程

 

 

 

      看完”入門”和”進階”兩篇文章,對.NET Core的常用特性基本是掌握了的。接下來的”高階”篇,會介紹效能、原理、微服務架構、DDD等知識,不過這篇文章會過幾個月整理出,中間打算研究一些開源框架,並分享給大家。

==============================================================================

over,謝謝查閱,覺得文章對你有收穫,請多幫推薦。歡迎向我提供更好的資料資訊。