.Net Core + DDD基礎分層 + 項目基本框架 + 我的總結

爲何要寫這篇文章

1,在大半年前,公司開發任務比較輕鬆,本身不知道幹什麼,可是又想要學習技術,比較迷茫,後面我接觸到了博客園,看了一個帖子,深有感觸,我當時不知道學習什麼,因而我信息給他,他竟然回覆我了,而且還給我建議學習的方向,以及學習的方法,我十分的感謝他。
2,在一次面試中,有人問我,你工做1年多了有沒有作過自我總結,你以爲你的優點是什麼,我當時吞吞吐吐的回答了,心裏十分的慌張,在此補上總結。
3,學習了一段時間.Net Core了,記憶力比較差,記錄下來,爲之後用時作準備。
前端

項目基礎分層

在學習DDD的分層知識,如今的代碼裏面只運用了一些DDD戰術設計的知識,如今這樣分層爲了之後知識積累夠了,在上面完善,目前的技術很菜,結合網上以及使用的理解寫出本身使用過或者能理解部分。
git

基礎設施層

基礎設施層使用的相關知識:Code First ,EF Core,Autofac依賴注入,倉儲模式的實現接口,領域服務的實現接口,緩存,以及各類基礎工具類
一,Code First:使用Code First 數據遷移到數據庫。
經常使用的數據庫遷移命令: Add-Migration 遷移名 —— 添加本次遷移 Update-Database——將本次遷移到數據庫 Add-Migration InitialCreate -IgnoreChanges -—— 建立一次空的數據遷移:已如今版本爲起始點程序員

二,EF Core :軟刪除 ——全局過濾刪除的狀態,AsNoTracking() ——不持久化到數據庫時的查詢使用 Any——查詢判斷使用Any ,Z.EntityFramework.Plus-——批量修改,刪除,增刪改查,簡單封裝異步 Anysnc Await 方法github

三,工具類,例如MD5,AutoMapperHelper,LamdaHelper,RedisHelper簡單應用,讀取配置文件,統一返回參數等。面試

四,Redis緩存,多種數據類型,查詢,插入效率高,Redis與數據庫同步策略,先更新數據庫在刪除緩存,延時雙刪,(延時,根據數據查詢的數據來判斷延時的時間),使用StackExchange.Redis
數據庫

應用層

應用層使用的相關知識:AutoMapper,Dto,Autofac依賴注入緩存

一,Dto:數據傳輸對象,主要是展示層和應用層傳輸數據app

二,AutoMapper:對象之間傳輸數據,先使用倉儲查詢出數據,而後經過AutoMapper轉換成前端須要的數據返回異步

領域層

領域層使用的相關知識:實體,值對象,領域服務接口,倉儲接口,聚合,Autofac依賴注入
一,實體:有惟一的標識(惟一,不可變),包含業務邏輯,以及自身的驗證,構造函數實例化,實體的Set應設置爲私有的函數

二,值對象:沒有惟一的標識,用來描述一個東西的特徵,表明是什麼

三,聚合:聚合根是實體,聚合是對象的組合,由聚合自己維護自身的一致性,封裝業務邏輯,聚合儘可能小,聚合之間經過惟一標識引用

四,倉儲:倉儲是針對聚合的,封裝領域邏輯,明確查詢的意圖,倉儲中只維護聚合的狀態,不進行持久化,倉儲能夠方便單元測試,更換ORM

五,領域服務:,領域服務是無狀態的,有些業務邏輯很差放在聚合裏面的可使用領域服務,多個聚合根協調,領域服務中可使用倉儲

六,Autofac依賴注入:有利於項目層與層之間的解耦,方便單元測試,構造函數注入,依賴倒置,經過約定進行程序集的注入

展示層

一,展示層使用的相關知識:.Net Core WebApi ,MVC,JWT Swagger,日誌異常的捕捉,模型的驗證,Log4Net,Autofac依賴注入,過濾器

二,JWT:JWT包含了使用.分隔的三部分: Header 頭部 Payload 負載 Signature 簽名,在前端每次請求加上JWT 簽發的Token 來替代Session,進行訪問頁面的驗證

三,Swagger:可使用Swagger來請求WebApi ,以及查看WebApi 接口,Swagger能夠作接口文檔

四,Log4Net:日誌異常的全局捕捉,記錄日誌到TXT中

五,過濾器:使用過濾器來進行模型的驗證 ,Log4Net的日誌異常的全局捕捉,以及權限的訪問

簡單的單元測試

單元測試使用的相關知識:Xunit,Autofac依賴注入

學習的方向,以及目標

謝謝蟋蟀大哥的幾句指導,學習.Net Core 開闊了個人視野,才瞭解到DDD,ABP,以及上面的技術,雖然個人技術還很菜,許多技術以及基礎知識都不太牢固,可是我還會繼續學習,謝謝博客園裏面每一位技術分享者。
一,方向:學習Redis ,消息隊列, 讀寫分離,DDD ,業務分析能力, ABP

二,目標:明年成爲一箇中級的程序員

項目源碼地址

https://github.com/Fengddd/ProjectNetCore.git

相關文章
相關標籤/搜索