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

来源:https://www.cnblogs.com/heyuquan/archive/2019/09/04/dotnet-advance-learning-resource.html
-Advertisement-
Play Games

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


 

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

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

 

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

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

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

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

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

    介紹.NET工程化、AOP、異常處理、緩存、日誌、響應優化、上傳下載、健康檢查、後臺任務、認證和授權、安全性(HttpsCORSCSRF)、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面向切麵編程

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

      image

      ASP.NET Core 被低估的過濾器

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

 

#、代碼織入

l  編譯時靜態織入

框架:PostSharpFody

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

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

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

框架:Castle DynamicProxy

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

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

 

.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分散式日誌框架

      .NET Core 快速搭建Docker-ELK分散式日誌中心

 

響應優化

在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、多資料庫源、設置主應用

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...