版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 清潔能源施工合同
- 酒店用品招投標合同模板
- 犬種改良協(xié)議樣本
- 釀酒行業(yè)顧問服務協(xié)議
- 短期導購員聘用協(xié)議樣本
- 健身器材租賃合同模板
- 傳媒行業(yè)業(yè)務代表勞動合同
- 市場調研助理招聘協(xié)議
- 礦山開采基礎施工合同
- 跨國公司區(qū)域總監(jiān)招聘協(xié)議
- 現(xiàn)代小說課件教學課件
- 2023年遵義市第一人民醫(yī)院招聘筆試真題
- 四年級數(shù)學(上)計算題專項練習及答案
- GB/T 16716.5-2024包裝與環(huán)境第5部分:能量回收
- 2023-2024學年安徽省合肥市瑤海區(qū)八年級(上)期末數(shù)學試卷(含答案)
- 2018普通高中第十屆化學趣味知識競賽(含答案)
- 6S管理制度(試行)
- 北京市海淀區(qū)2022屆高三上學期期末考試語文試題 含答案
- 2024新信息科技三年級《第二單元 記錄美好時光》大單元 第5課 美化處理圖片(計劃一課時) 教學設計2022課標
- 人教版九年級道法全冊易混易錯知識點(二)
- 山西省建筑消防設施維護保養(yǎng)規(guī)程 DB14T2489-2022知識培訓
評論
0/150
提交評論