學習路線圖
(關於學習ASP.NET Core需要了解和掌握的知識點圖)
一言不合就來圖,各位博客園小伙伴大家好,明天就是1024程序員節了,在這個時候,應該說些什么,感覺好久沒有寫文章了,自從春節開始,中間經歷種種,慢慢的就開始微信公眾號發文了,原因有很多,不做說明,不好的地方就是不知道目錄鏈接,所以還是發到博客園吧。
請注意:我不是做框架的,BCVP只是作為案例來配合文章視頻,掌握了技術才是關鍵。
為什么要突然寫這篇了呢,是因為這一年我又寫了一些文章和幾個視頻,但是因為比較雜亂無章,很多人都找不到自己想要看的資料,一直向我反饋很多次了,時不時的在QQ群里問相關的知識點,或者一直在百度,畢竟我已經總結過了,要是百度未免有些浪費時間,所以就打算總結出來,這樣方便大家查找,也方便我分享指導,更是自我的一個總結吧。你可能會問,那你之前為啥不總結,因為我現在基本已經該講的都講完了,畢竟已經快到K8s,所以總體的總結一下,情有可原吧。
上邊這個路線圖呢,我個人認為沒必要都學會,一半足矣,當然會的越多肯定越好,只不過精力不足的情況下,還是要打基礎,然后看服務,最后寫業務,這是我的總結的。好啦,下邊就開始總結吧,文章采用list列表的形式,會對每篇文章/視頻簡要描述,這樣你一看就大概知道這是講啥的了。
這是我這兩年講解的知識點大綱導圖:
(在線思維導圖工具:mindmeister,內容持續更新中...)
在線項目案例展示,是下邊知識講解的代碼展示:
(在線項目案例)
ASP.NET CORE學習指南
PS:
1、下文說的知識點基本都是netcore3.1版本的,特別標注為(視頻)的,是視頻教程,其他的皆是文章教程
2、點擊每一個小標題即可到達目的鏈接。
3、官網永遠是最好的老師: https://docs.microsoft.com/zh-cn/dotnet/core
4、一共73篇ASP.NetCore基礎知識+19篇Ids4內容+23篇DDD = 115(篇/個 視頻和文章)
《基礎知識掌握部分》
-
A.1、后端WebApi項目初探搭建
本文主要是講解了我們如何創建一個ASP.NETCore項目,並對其中的初始的幾個重要文件和Class類文件做了簡單的講解和梳理,看完之后,可以動手創建一個初始化項目。 -
A.2、ASP.NET Core框架基礎(視頻)
本視頻從為什么學習ASP.NETCore入手,講解了其發展歷史、相應的執行過程、以及如何命令行創建項目。 -
A.3、運行原理解析(視頻)
本視頻簡單分析了ASP.NETCore的運行原理、重要文件的分析、如何下載查看源碼、Host項目啟動過程分析。 -
A.4、進程內和進程外討論(視頻)
視頻重點分析了,NetCore和.NetFwk之間的區別和聯系,是如何運行起來的,進程內和進程外的含義。 -
A.5、NetCore編譯和運行時過程(視頻)
通過直播的形式,分析了ASP.NETCore是如何編譯的,也說明了運行時執行的過程是怎樣的,有助於理解項目啟動。 -
B.1、Swagger接口文檔的使用
文章講解了如何在ASP.NETCore Webapi項目中,引入接口文檔swagger,並自定義index.html首頁。 -
B.2、Swagger代碼拷貝(視頻)
視頻版講解如何從blog.core項目中,把Swagger組件部分的代碼拷貝出來。
-
B.3、Swagger如何配合使用API多版本
自寫方案,比較簡單,比較low,可以借鑒和參考,如何配置swagger,使用api版本控制
-
C.1、JWT認證授權過程
文章分析了JWT令牌的由來和組成部分,自定義認證中間件和官方認證中間件(推薦使用)來講解如何認證token有效性,如何在Swagger中開啟小鎖,以及其他比如Claim聲明等小知識點。 -
C.2、JWT原理詳解(視頻版,NetCore2.2版本)
視頻講解API保護的幾種方案、JWT的核心知識、如何使用JWT,令牌是如何存到HTTPContext中,如何解析Claim、使用的好處等 -
C.3、簡單角色授權(視頻)
通過直播的形式,手寫代碼,如何基於角色的簡單授權,生成令牌(3+2),認證過程演示等。 -
C.4、授權和上下文的關系(視頻)
通過直播,講解授權是如何讓JWT令牌這個字符串,變成系統的HttpContext內存中的。 -
C.5、權限認證流程解析,7個表,實現數據庫復雜策略鑒權
本文講解最簡單的一種授權認證方案,將接口、菜單、角色、用戶四個模板給結合在一起,實現基於數據庫接寶的復雜策略授權。 -
C.6、JWT滑動刷新
通過一個很簡單的小技巧,將JWT失效后,如何做到前端無感刷新的案例,有一定的參考意義。 -
C.7、基於數據庫的復雜策略授權(視頻)
通過直播的形式,分析了BlogCore項目中,是如何實現JWT 基於數據庫 復雜的認證策略授權的。 -
C.8、如何從HttpContext中獲取用戶信息(視頻)
上邊我們說了token是如何轉成HttpContext內存中的,那這篇講的是,如何從內存中,把用戶信息取出來,實現閉環。 -
D.1、什么是倉儲模式
說白了,很像之前的三層架構的數據訪問層,只不過是想把這個倉儲的概念說出來,讓大家先了解,為DDD打基礎。 -
D.2、泛型基類倉儲的使用
用了泛型基類,可以省去每個倉儲和服務文件,都寫CURD等基礎操作了。 -
D.3、用泛型倉儲做服務注入
通過泛型倉儲的形式,可以省去多余不必需要的空倉儲子文件,同時也去掉倉儲接口層,如果倉儲層。 -
E.1、依賴注入與IOC
大篇幅講解依賴注入的由來、好處、使用方法、三種聲明周期注冊方式、容器化管理含義、Autofac組件使用、批量服務注冊,無接口注冊等。 -
E.2、原生依賴注入一對多
簡單的實現一個接口,多個實現的注入方案。 -
E.3、依賴注入原理解析(視頻)
視頻的形式,深入分析控制反轉的由來、為什么使用、注入的步驟、三種注冊方法、三種注入方法、Autofac組件使用、查看是否注入成功等; -
E.4、三個生命周期注冊糾結說明(視頻)
是針對上一個視頻的補充說明。 -
E.5、Autofac組件使用(視頻)
講解如何從blogcore項目中,把依賴注入Autofac組件的代碼給copy出來,自己使用。 -
E.6、依賴注入直播(視頻)
通過直播的形式,手敲代碼,也是使用Autofac組件來實現。 -
F.1、AOP切面編程初探
通過兩個案例:AOP緩存和AOP日志,來配合講解切面編程的原理。 -
F.2、AOP結合Redis實現切面緩存
切面編程的第三個案例:Redis緩存。 -
F.3、AOP切面編程原理分析(視頻)
視頻的形式,分析什么是AOP、面向過程/面向對象/面向切面/面向服務之間的發展歷程和關系、切面編程的優勢、使用場景等。 -
F.4、AOP原理—動態代理(視頻)
以直播的形式,分享AOP的核心思想:動態代理是如何將目標類做代理服務的。 -
G.1、DTOs數據傳輸對象
第一次將視圖模型、對象傳輸引出討論,並介紹如何將對象進行合理化映射,以及最后的Automapper的使用。 -
G.2、Dto與多模型(視頻)
通過視頻的講解,進一步討論為什么項目中需要用到多個模型,已經模型之間的傳輸和體現形式。 -
G.3、Automapper對象映射(視頻)
將Blog.Core中對應的Automapper組件的使用的內容抽離出來,更好的方便對組件的學習。 -
H.1、基於Log4net的全局異常日志
文章主要包含兩個部分,第一個是全局異常處理,第二個就是集成日志,這里使用的是Log4net,目前這個日志方案和我blogcore的不一樣,我還在修改中,備注。 -
H.2、Log4Net日志處理(視頻)
視頻是將Blog.Core中對應的Log4net組件的部分內容給抽離出來,可以針對性學習,這里的代碼是最終正式且正確的。 -
H.3、日志_Serilog(視頻)
通過直播的形式,一步步給大家講解如何在Asp.NetCore中使用Serilog組件。 -
I.1、配置IConfiguration(視頻)
視頻講解如何在Blog.Core中來使用配置,並對Appconfig.cs類抽離出來,有一定的參考價值。 -
I.2、變量與配置(視頻)
也是一期視頻,分析了下平時開發的時候是如何使用配置的,主要列舉了常見的幾種方案。 -
J.1、跨域與代理,3.0正式版
本文主要是下邊兩篇文章的總結篇,而且是基於netcore3.0的,可以只看本文即可,當然可以看下邊兩篇,講解了四種平時開發中必須用到的方案和技術,JSONP、CORS、devProxy、Nginx。 -
J.2、三種跨域比較
比較原始的3種開發方案,主要是在.Net Fwk中使用的,分別是JsonP,請求頭,CORS。 -
J.3、另外兩種方案實現跨域
在上邊的基礎上,講解了vue項目中用到的本地devProxy代理模式,和部署到線上后的nginx反向代理,來實現跨域。 -
J.4、跨域原理詳解(視頻)
視頻不僅講解了下跨域的原理,還列舉了常見開發的六種跨域方案,比較詳細,值得觀看。 -
J.5、CORS跨域與釣魚(視頻)
將Blog.Core項目中關於CORS跨域的那部分代碼給抽離出來,更方便在新的項目中使用。 -
K.1、Ip限流(視頻)
也是把Blog.Core中的代碼抽離講解,起到一定的限流的作用,有一定的借鑒,使用組件AspNetCoreRateLimit -
L.1、基於AOP實現接口性能分析
將AOP、SqlSugar的Sql輸出、Miniprefiler三個組件相結合,實現AOP切面的接口性能分析,並在swagger中輸出sql日志等多個日志。 -
L.2、性能監控分析MiniProfiler(視頻)
通過視頻的方式,將Blog.Core中,關於性能監控的部分抽離出來,也同時講解了如何自定義Swagger首頁問題。
-
《部署與組件學習部分》
-
M.1、最全的部署方案和錯誤分析
本文比較全面的講解了,如何在windows、CentOs、Ubuntu等系統上部署前后端分離項目,也講解了如何使用IIS和Nginx等代理服務器,最后也列舉了前后端部署的時候比較常見的錯誤案例和解決辦法,從404到503。 -
M.2、在線項目全部遷移到Linux
作為開源的六個在線項目,個人表示還是有點兒借鑒意義的,目前都已經遷移到了Linux服務器,文章列舉了方案和方法,也有對問題的解決方案。 -
M.3、在Windows上部署Aspnetcore(視頻)
以視頻的形式,講解了ASP.NETCore項目在win系統上的多種部署方案,獨立部署,框架依賴部署等等,如何選擇合理的服務器,如何安裝指定的依賴環境,以及可能在部署中遇到了常見問題,比如缺少文件,環境錯誤,跨域問題等。 -
M.4、在Linux上部署Aspnetcore(視頻)
和上邊的講解內容一樣,只不過是在CentOS系統上講解。 -
M.5、在Azure上部署Aspnetcore(視頻)
內容同上,通過三個小視頻,講解第一次如何注冊和使用Azure,以及如何部署。 -
M.6、BlogCore在IIS中的三種部署方案(視頻)
和上邊的內容不太一樣,本視頻主要用BCVP的三端項目作為案例,講解前后端是如何在IIS中部署的,比如新建虛擬目錄還是靜態文件等等。 -
M.7、Nginx+Git的形式部署BlogCore(視頻)
前邊幾種都是在本地publish發布好后,上傳到服務器再部署,本視頻是通過git的形式,將源代碼clone到服務器,實現手動版的快速部署。 -
M.8、BlogCore前后端部署Linux(視頻)
用BCVP前后端項目,部署在Linux,可能和上邊的視頻有重復。 -
N.1、Redis的異步開發
使用的組件是微軟官方推薦的StackExchange.Redis,然后用異步方式可以解決一些問題。 -
N.2、StackEx.Redis的安裝與使用(視頻)
通過視頻的形式,基於BlogCore來講解和分析如何使用Redis。 -
N.3、基於Redis的消息隊列概要
很簡單的實現MQ,支持一個發布多種訂閱。 -
O.1、集成任務調度Quartz.Net
參考作者@Kawhi,來設計的一個基於Quart.Net的任務調度中心。 -
O.2、任務調度Quartz的使用(視頻)
主要講解BlogCore中是如何使用的,並把該部分代碼給抽離出來,方便獨立學習。 -
P.1、基於SignalR實時通信實現日志推送
本文基於NetCore項目,結合SignalR,將后端項目五種日志實時推送到Vue的Admin項目,比如異常日志,操作訪問日志,sql日志等等。 -
P.2、SignalR通訊初體驗(視頻)
采用視頻的形式,從新寫Demo代碼,用js來講解。 -
P.3、SignalR指定用戶組發消息(視頻)
上邊的是對全部人發消息,本視頻是針對指定的用戶群體,用戶組Group發消息。 -
P.4、SignalR通過JWT實現用戶間通訊(視頻)
本視頻繼續深入,通過令牌的方式,識別指定的某個用戶,並實現相互之間的通訊。 -
Q.1、xUnit測試——單元測試(視頻)
借鑒eShopOnContainer架構,用計算器的小方法入手,講解TDD是如何實現快速敏捷開發的,對理解單元測試有一定的幫助。 -
Q.2、xUnit測試——功能集成測試(視頻)
在上邊單元測試的基礎上,進一步說明功能測試,如何實現項目某個功能模塊是否成功。 -
《容器化與跨平台部分》
-
R.1、使用Docker部署Asp.NetCore應用
文章用BlogCore作為真是案例,在CentOS系統上安裝Docker,並部署相應的應用,注意在安裝的過程中,盡量先安裝Docker,再安裝SDK,如果先安裝SDK,可能會出現倉儲的異常更新問題,解決方案是,刪除了,再安裝,然后再添加倉儲源文件。 -
R.2、在Docker中配置ASP.NETCore的HTTPS模式
內容很簡單,就是對Docker中的Aspnetcore應用,配置Https的安全模式,需要證書。 -
R.3、Dcoker容器化操作(視頻)
通過視頻的形式,講解如何在Linux系統上,安裝Docker,並部署項目。 -
R.4、Docker端口映射解析(視頻)
講解我們在使用Docker的時候,如何在ASP.NETCore項目中,配置端口,並合理的Expose端口,才能實現監聽和代理。 -
R.5、Docker部署Vue應用(視頻)
除了可以構建后端應用,同樣可以將前端項目,比如vue,來構建鏡像,並生成運行容器。 -
R.6、Docker -v掛載配置文件到宿主機(視頻)
掛載是Docker應用中,很重要的一個技術,也是必須要學會的技能,合理使用掛載,對於容器的安全性,健壯性都很有幫助。 -
S.1、CICD,使用Docker安裝Jenkins
之前都是習慣了全家桶似的安裝Jenkins,當然如果公司想要更強大的功能可以一點點安裝,如果項目比較中等,用docker安裝就行了。 -
S.2、使用Jenkins發布和代理ASP.NETCore項目
上文已經安裝好后,可以部署core項目了,只不過會有問題,比如不能在Jenkins容器內使用dotnet命令,所以需要一個新的jenkin鏡像,我已經封裝好了,可以直接使用。 -
S.3、Jenkins的安裝與使用(視頻)
通過視頻的形式,給大家展示了使用一個空的全新的CentOS系統,一一說明如何安裝docker,如何安裝Jenkins,並如何配置core項目,並代理和反向代理等。 -
T.1、IdentityServer4系列教程(10篇文章)
因為Ids4的變動比較少,所以還是延續之前的目錄即可,還是比較工整的,一共文章十篇,這里就不過多的介紹了,從基礎知識,到表結構遷移,數據持久化,三端聯調,統一角色管理,安全加鎖等等多個方面講解了如何使用IdentityServer4項目。 -
T.2、Ids4學習視頻教程(9節視頻)
通過視頻的形式,更加深入的講解了我們開發ids4認證平台的時候,需要掌握的核心知識點,其中要學習Ids4,最最重要的就是OAuth2協議,OpenConnectID流程,數據庫每個表是什么意思,如何修改,每一個數據庫上下文如何修改,對應怎樣的功能模塊,如果在認證平台合理處理用戶和角色信息,如何將認證平台和資源服務器很好的結合在一起,如何三端聯調。 -
U.1、DDD視頻與文章(13篇文章)
DDD領域驅動設計的核心,就是學會如何分析業務、划分限界上下文、處理聚合、理解實體/聚合根/值對象的關系、掌握充血模型的設計、會使用事件和命令、合理使用經典四層模型、最后要學會總線的概念和運用和訂閱發布模式、學會使用MediatR和RabbitMQ。因為在微服務中,基本都是分布式微服務,保證業務的完整性,正確性,是很有必要的,事件總線,服務總線是一個很好的辦法。 -
U.2、DDD驅動設計的理論篇(10個視頻)
這個系列視頻是理論基本的,沒有書寫代碼,只是從思想上入門,以后把eShopOnContainer講完,正好把shopping微服務作為一個很好的DDD案例,加以實戰講解。
一共73篇ASP.NetCore基礎知識+19篇Ids4內容+23篇DDD = 115(篇/個 視頻和文章)
未完待續。。。
Come On。