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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

ABP簡介20181領域驅動設計DDD

基本概念分層

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

與面向對象中的概念類似,領域模型的基本元素實體(entity)

與面向對象中的概念類似,領域模型的基本元素領域一個領域本質上可以理解為就是一個問題域,只要是同一個領域,那問題域就相同。所以,只要我們確定了系統(tǒng)所屬的領域,那這個系統(tǒng)的核心業(yè)務,即要解決的關鍵問題、問題的范圍邊界就基本確定了。比如MIS系統(tǒng)商品子域用戶子域銷售子域訂單子域支付子域物流子域

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

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

溫馨提示

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

評論

0/150

提交評論