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

下載本文檔

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

文檔簡(jiǎn)介

ABP簡(jiǎn)介20181領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)DDD

基本概念分層

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

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論