DDD簡單介紹課件_第1頁
DDD簡單介紹課件_第2頁
DDD簡單介紹課件_第3頁
DDD簡單介紹課件_第4頁
DDD簡單介紹課件_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

ABP簡介20181領(lǐng)域驅(qū)動設(shè)計DDD

基本概念分層

領(lǐng)域驅(qū)動設(shè)計過程基本術(shù)語參考資料基本概念領(lǐng)域驅(qū)動設(shè)計不是架構(gòu)方法,也并非設(shè)計模式,而是一種思維方式傳統(tǒng)方式:針對數(shù)據(jù)進行建模領(lǐng)域驅(qū)動:將需要解決的業(yè)務(wù)概念和業(yè)務(wù)規(guī)則,通過合理運用面向?qū)ο蟮囊恍┗疽?,轉(zhuǎn)換為軟件系統(tǒng)中的類型以及類型的屬性與行為。DDD中解決這一問題的核心方法是通用語言。普通的三層領(lǐng)域驅(qū)動的分層用戶展現(xiàn)層:負責向用戶展現(xiàn)信息以及解釋用戶命令應用層:很薄的一層,用來協(xié)調(diào)應用的活動,它不包含業(yè)務(wù)邏輯,它不保留業(yè)務(wù)對象的狀態(tài),但是它保有應用任務(wù)的進度狀態(tài)領(lǐng)域?qū)樱罕緦影P(guān)于領(lǐng)域的信息,這是業(yè)務(wù)軟件的核心所在。這里保留業(yè)務(wù)對象的狀態(tài),對業(yè)務(wù)對象和他們狀態(tài)的持久化委托給了基礎(chǔ)設(shè)施層基礎(chǔ)設(shè)施層:本層作為其他層的支撐庫存在。它提供了層間的通訊,實現(xiàn)對業(yè)務(wù)對象的持久化,包含對用戶界面層的支撐庫領(lǐng)域驅(qū)動設(shè)計過程領(lǐng)域驅(qū)動設(shè)計不是架構(gòu)方法,也并非設(shè)計模式,而是一種思維方式。貫穿了整個軟件開發(fā)的生命周期,包括對需求的分析,建模,架構(gòu),設(shè)計,甚至最終的編碼實現(xiàn),乃至對編碼的測試與重構(gòu)。領(lǐng)域驅(qū)動設(shè)計從業(yè)務(wù)需求中提煉出統(tǒng)一語言(Ubiquitouslanguage),再基于統(tǒng)一語言建立領(lǐng)域模型,這個領(lǐng)域模型會指導這程序設(shè)計以及編碼實現(xiàn),最后,通過重構(gòu)來發(fā)現(xiàn)隱式概念,并運用設(shè)計模式改進設(shè)計與開發(fā)質(zhì)量。基本術(shù)語通用語言:通用語言包含術(shù)語和用例場景,且能夠直接反映在代碼中領(lǐng)域領(lǐng)域模型:形似UML類圖統(tǒng)一建模語言:UML實體(entity)值對象(valueobject)聚合及聚合根(aggregate、aggregateroot)工廠(factories)倉儲(Repository)實體(entity)

與面向?qū)ο笾械母拍铑愃疲I(lǐng)域模型的基本元素實體(entity)

與面向?qū)ο笾械母拍铑愃?,領(lǐng)域模型的基本元素領(lǐng)域一個領(lǐng)域本質(zhì)上可以理解為就是一個問題域,只要是同一個領(lǐng)域,那問題域就相同。所以,只要我們確定了系統(tǒng)所屬的領(lǐng)域,那這個系統(tǒng)的核心業(yè)務(wù),即要解決的關(guān)鍵問題、問題的范圍邊界就基本確定了。比如MIS系統(tǒng)商品子域用戶子域銷售子域訂單子域支付子域物流子域

值對象(valueobject)和我們說的編程中數(shù)值類型的變量是不同的,它僅僅是沒有唯一標識符的實體,比如有兩個收獲地址的信息完全一樣,那它就是值對象,并不是實體。值對象在領(lǐng)域模型中是可以被共享的,他們應該是“不可變的”(只讀的),當有其他地方需要用到值對象時,可以將它的副本作為參數(shù)傳遞。聚合及聚合根(aggregate、aggregateroot)聚合被看作是多個模型單元間的組合,它定義了模型的關(guān)系和邊界。每個聚合都有一個根,根是一個實體,并且是唯一可被外訪問的。customer是該聚合的根,其他的都是內(nèi)部對象工廠(factories)和設(shè)計模式中的工廠模式一個意思,把創(chuàng)建對象的細節(jié)封裝起來,實現(xiàn)了依賴反轉(zhuǎn)倉儲(Repository)倉庫封裝了獲取對象的邏輯,領(lǐng)域?qū)ο鬅o須和底層數(shù)據(jù)庫交互,它只需要從倉庫中獲取對象即可。參考資料DDD理論學習系列2ASP.NETBoilerplateProjectABPABPASP.NETBoilerplate是一個用最佳實踐和流行技術(shù)開發(fā)現(xiàn)代WEB應用程序的新起點,它旨在成為一個通用的WEB應用程序框架和項目模板。ASP.NETBoilerplate基于DDD的經(jīng)典分層架構(gòu)思想,實現(xiàn)了眾多DDD的概念(但沒有實現(xiàn)所有DDD的概念)。服務(wù)器端技術(shù)ASP.NETMVC5、ASP.NETCore、WebAPI2、C#5.0DDD領(lǐng)域驅(qū)動設(shè)計(Entities、Repositories、DomainServices、DomainEvents、ApplicationServices、DTOs等)Castlewindsor(依賴注入容器)EntityFramework6\NHibernate\Dapper,數(shù)據(jù)遷移Log4Net(日志記錄)AutoMapper(實現(xiàn)Dto類與實體類的雙向自動轉(zhuǎn)換)客戶端技術(shù)Bootstrap

LessAngular,VuejQueryModernizr其他JS庫:jQuery.validate、jQuery.form、jQuery.blockUI、json2ABP框架已實現(xiàn)了以下特性多語言/本地化支持多租戶支持(每個租戶的數(shù)據(jù)自動隔離,業(yè)務(wù)模塊開發(fā)者不需要在保存和查詢數(shù)據(jù)時寫相應代碼)軟刪除支持(繼承相應的基類或?qū)崿F(xiàn)相應接口,會自動實現(xiàn)軟刪除)統(tǒng)一的異常處理(應用層幾乎不需要處理自己寫異常處理代碼)數(shù)據(jù)有效性驗證(Asp.NETMVC只能做到Action方法的參數(shù)驗證,ABP實現(xiàn)了Application層方法的參數(shù)有效性驗證)日志記錄(自動記錄程序異常)模塊化開發(fā)(每個模塊有獨立的EFDbContext,可單獨指定數(shù)據(jù)庫)Repository倉儲模式(已實現(xiàn)了EntityFramework、NHibernate、MangoDB、內(nèi)存數(shù)據(jù)庫)UnitOfWork工作單元模式(為應用層和倉儲層的方法自動實現(xiàn)數(shù)據(jù)庫事務(wù))EventBus實現(xiàn)領(lǐng)域事件(DomainEvents)DLL嵌入資源管理通過ApplicationServices自動創(chuàng)建WebApi層(不需要寫ApiController層了)自動創(chuàng)建Javascript的代理層來更方便使用WebApi封裝一些Javascript函數(shù),更方便地使用ajax、消息框、通知組件、忙狀態(tài)的遮罩層等等項目說明各層概念:1.表現(xiàn)層(PresentationLayer):圖中的用戶界面層包括用戶接口層,用戶輸入和數(shù)據(jù)展示。2.應用層(Application

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論