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


 

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

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

 

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

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

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

    介紹.NET歷史、開源之路、基礎、路由、依賴注入DI、HttpContextcookie|sessionHttpClientgRPC、單元測試、發布部署等等。

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

    介紹.NET工程化、AOP、異常處理、緩存、日志、響應優化、上傳下載、健康檢查、后台任務、認證和授權、安全性(HttpsCORSCSRF)、EF Core 等等

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

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

 

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

   

 

.NET 工程化

#StyleCop編碼規范

StyleCop規則匯總

在VS2017中使用StyleCop

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

 

#Nuget

安裝NuGet 客戶端工具

使用 Visual Studio 創建和發布 NuGet 包

NuGet.Server

承載自己的NuGet 源

Nuget管理工具BaGet使用教程

Nuget管理工具FuGet使用教程

vs項目文件信息批量編輯、打包工具:ProjectFileManager

 

#Swagger Api文檔

常見的幾個接口管理平台簡介

Swagger 規范 (swagger.json)

Swagger+AutoRest 生成web api客戶端(.Net)

Swashbuckle方式

Asp.Net Core 使用Swagger生成API文檔並添加API分組

Asp.Net Core 使用Swagger生成API文檔並添加文檔描述、響應類型描述

Asp.Net Core 給API的Model生成說明文檔、隱藏某些API

Swashbuckle swagger 4 認證遷移至Swashbuckle.AspNetCore version 5

一個Swagger支持多個api端口的配置(方便測試)

Asp.Net Core Swagger 頁面支持文件上傳

NSwag方式

Asp.Net Core 使用NSwag生成Swagger Api文檔

NSwagStudio for Swagger Api

    借助 NSwagStudio 工具可為包含 Swagger 的第三方 API,生成API客戶端代理代碼

 

AOP面向切面編程

AOPAspect-Oriented Programming)是一種將函數的輔助性功能與業務邏輯相分離的編程范式(programming paradigm),其目的是將橫切關注點(cross-cutting concerns)分離出來,使得程序具有更高的模塊化特性。

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

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

 

#中間件Middleware(管道級)

中間件就是嵌入到應用管道中用於處理請求和響應的一段代碼,ASP.NET Core 中使用了大量的中間件。eg:全局異常、路由、響應緩存、響應壓縮、身份認證、CORS、日志記錄等等

      image

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

      ASP.NET Core Middleware 的實現(RunMapUse,內置中間件)

      【機翻】 【人工翻譯】

 

#、過濾器Filter(action級)

      image

      ASP.NET Core 被低估的過濾器

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

 

#、代碼織入(對象的攔截器)

l  編譯時靜態織入

框架:PostSharpFody

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

實現思想:給語言的編譯器做擴展,使得在編譯程序的時候編譯器將相應的“切面”代碼織入到業務代碼的指定連接點,輸出整合的結果。

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

框架:Castle DynamicProxy

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

實現方式:將擴展添加到運行虛擬機而不是編譯器。切面代碼和業務代碼分別獨立編譯,而在運行時由虛擬機在必要時進行織入。

 

.Net AOP代碼織入介紹

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

.Net AOP代碼織入之《攔截方法》(包含案例:數據事物、多線程)

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

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

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

.NET Core 原生DI+AOP實現注解式編程

.NET Core 泛型倉儲和聲明式事物實現最優雅的crud操作

 

異常處理

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分布式日志框架

      Exceptionless 5.0.0 本地Docker快速部署介紹

      .NET Core 快速搭建Docker-ELK分布式日志中心

 

響應優化

在ASP.NET Core 中的響應壓縮

ASP.NET Core 中使用ResponseCache 響應緩存

 

上傳下載

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

ASP.NET Core 下載斷點續傳

 

健康檢查

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

.Net Core實現健康檢查

[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.configWeb.config

quartz.net 3.x版本如何通過xml文件進行Job配置

CrystalQuartz

配置Quartz.NET Cluster以及遠程管理(CrystalQuartz)

Quartz.NET 可視化Job管理(CrystalQuartz)

CrystalQuartz 在線 Demo

 

認證和授權

理解ASP.NET Core驗證模型(Claim, ClaimsIdentity, ClaimsPrincipal)

 

#ASP.NET Core Identity身份認證

命名空間:Microsoft.AspNetCore.Identity

創建完整的ASP.NET Core Identity基架(多圖)

ASP.NET Core Identity框架簡介

ASP.NET Core Identity配置(聲明類型、鎖定策略、密碼策略、登錄策略等等)

ASP.NET Core 中注冊確認電子郵件和重置密碼

雙因素認證

        雙因素認證(2FA)教程[阮一峰]

        在ASP.NET Core 中啟用TOTP身份驗證APP

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自定義策略授權

ASP.NET Core Authentication and Authorization

ASP.NET Core razor page 授權約定

.NET Core JWT權限驗證   [博文]   [視頻]

ASP.NET Core JWT認證、更改Token來源、更改Token驗證方式

#IdentityServer4 認證授權

[阮一峰]理解OAuth 2.0

OAuth2.0授權登錄四種模式時序圖

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

[免費視頻]IdentityServer4 教程視頻

 

安全性

檢查HTTP Header 是否安全

.NET項目安全設置向導

在.NET Core中使用 MachineKey (NuGet包:AspNetTicketBridge)

ASP.NET Core 優雅的在開發環境保存機密(User Secrets)--secrets.json

#、HTTPS

ASP.NET Core 在強制實施 HTTPS

HTTP Strict Transport Security (HSTS) in ASP.NET Core

.NET Core 強制使用https,把所有的HTTP請求轉換為HTTPS

#Data Protection 機制 (.NET Core 數據保護)

ASP.NET Core 數據保護(Data Protection)【上】

ASP.NET Core 數據保護(Data Protection)【中】

ASP.NET Core 數據保護(Data Protection 集群場景)【下】

#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 微軟官網教程(非常全)

Linq入門詳解(Linq to Objects)

3分鍾了解數據庫事務(ACID、事務隔離級別)

EF Core 啟用SQL日志記錄

SQL Server Profiler的簡單過濾使用,方便查找和發現SQL執行的效率和語句問題

使用DbContextPool提高EfCore查詢性能

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

EF Core CodeFirst:從實體創建數據庫--示例

EF Core CodeFirst:從實體創建數據庫--命令和語法

EFCore數據庫遷移命令(使用Script-Migration命令生成遷移sql語句)

遷移疑問

    EF Core CodeFirst:創建數據庫遷移時報:Unable to create an object of type 'ApplicationDbContext' ,解決方案:DesignTimeDbContextFactory

    如何理解 Code-First migration, up/down方法?

全局唯一Id、有序GUID

    如何在高並發分布式系統中生成全局唯一Id

    使用有序GUID:提升其在各數據庫中作為主鍵時的性能

    如何使用有序GUID提升數據庫讀寫性能

模型配置

EF Core 自動生成值配置

EF Core 實體間關系

關系數據庫建模

關系數據庫建模(表映射、列映射、數據類型、索引等等)

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

並發

EF Core 並發檢查

EF Core 並發沖突處理

數據查詢

EF 中 IEnumerable,IQueryable ,Include 的用法

EF Core 關聯數據加載策略(預先加載、顯示加載、延遲加載)

EF Core 跟蹤與非跟蹤查詢(AsNoTracking)

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

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

批量數據操作

EF Core 原生支持的批量插入操作(sp_executesql)

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

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

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

 

 

 

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

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

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM