1. 程式人生 > >DDD領域驅動設計

DDD領域驅動設計

  • 去除一切花俏的建模技巧,我覺得最重要的方向就是去努力分析問題和事物的本質,針對這個本質進行領域建模。這個領域建模,最主要的還是鍛鍊的人的事物抽象能力。10個人,建出來的領域模型都不同。本質原因就是大家對同一個問題的理解不同,對事物的本質的理解不同。雖然最終都能解決當前的問題,但是對適應未來需求變化的能力卻是不同。
  • 所以,我們要把時間花在多理解業務上,讓自己成為領域專家,只有這樣,才能充分理解業務。多理解一點業務,你才能更好的抽象出業務本質背後的領域模型。很少有人能做到很快理解業務,並很快針對業務設計出正確的領域模型,至少我是不行。
  • 領域建模需要時間,是一個迭代的過程,人無完人。而時間很多時候也不會很充足,所以,不太可能一步到位把領域設計做的很完美。我們在整體專案規劃的時候可能會有個大的架構設計、業務大圖(邊界思維),但是不可能達到領域設計的粒度,只能是一期一期的完善,到最後可能才會有完整的上面的目錄內容。每一期都需要考慮支援的場景約束、上下文、系統邊界、持續整合的相關設計。設計product, not project。

相關推薦

EF Code first 和 DDD (領域驅動設計研究)系列一

發的 tex bsp cti 設計 ron 映射 developer devel 在上個公司工作時,開發公司產品的過程中,接觸到了EF Code first. 當時,整個產品的架構都是Lead developer設計建立的,自己也不是特別理解,就趕鴨子上架跟著一起開發了。

DDD領域驅動設計

去除一切花俏的建模技巧,我覺得最重要的方向就是去努力分析問題和事物的本質,針對這個本質進行領域建模。這個領域建模,最主要的還是鍛鍊的人的事物抽象能力。10個人,建出來的領域模型都不同。本質原因就是大家對同一個問題的理解不同,對事物的本質的理解不同。雖然最終都能解決當前的問題,但是對適應未來需求變化的能力卻

淺談我對DDD領域驅動設計的理解

從遇到問題開始 當人們要做一個軟體系統時,一般總是因為遇到了什麼問題,然後希望通過一個軟體系統來解決。 比如,我是一家企業,然後我覺得我現線上下銷售自己的產品還不夠,我希望能夠在線上也能銷售自己的產品。所以,自然而然就想到要做一個普通電商系統,用於實現線上銷售自己企業產品的目的。 再比如,我是一家網際網

C#進階系列——DDD領域驅動設計初探(六):領域服務

前言:之前一直在搭建專案架構的程式碼,有點偏離我們的主題(DDD)了,這篇我們繼續來聊聊DDD裡面另一個比較重要的知識點:領域服務。關於領域服務的使用,書中也介紹得比較晦澀,在此就根據博主自己的理解談談這個知識點的使用。 DDD領域驅動設計初探系列文章: 一、領域服務的引入 在《領域驅動設計:軟體核

C#進階系列——DDD領域驅動設計初探(四):WCF搭建

前言:前面三篇分享了下DDD裡面的兩個主要特性:聚合和倉儲。領域層的搭建基本完成,當然還涉及到領域事件和領域服務的部分,後面再專案搭建的過程中慢慢引入,博主的思路是先將整個架構走通,然後一步一步來新增相關元素,使架構慢慢變得豐滿。這篇打算分享下應用層的搭建。根據DDD的設計原則,應用層不包含任何領域邏輯,它主

C#進階系列——DDD領域驅動設計初探(五):AutoMapper使用

前言:前篇搭建了下WCF的程式碼,就提到了DTO的概念,對於為什麼要有這麼一個DTO的物件,上章可能對於這點不太詳盡,在此不厭其煩再來提提它的作用: 從安全上面考慮,領域Model都帶有領域業務,讓Client端引用Domain Model就意味著Client端可以繞過應用層直接完成業務邏輯的呼叫,這樣

C#進階系列——DDD領域驅動設計初探(三):倉儲Repository(下)

前言:上篇介紹了下倉儲的程式碼架構示例以及簡單分析了倉儲了使用優勢。本章還是繼續來完善下倉儲的設計。上章說了,倉儲的最主要作用的分離領域層和具體的技術架構,使得領域層更加專注領域邏輯。那麼涉及到具體的實現的時候我們應該怎麼做呢,本章就來說說倉儲裡面具體細節方便的知識。 DDD領域驅動設計初探系列文章:

C#進階系列——DDD領域驅動設計初探(二):倉儲Repository(上)

前言:上篇介紹了DDD設計Demo裡面的聚合劃分以及實體和聚合根的設計,這章繼續來說說DDD裡面最具爭議的話題之一的倉儲Repository,為什麼Repository會有這麼大的爭議,博主認為主要原因無非以下兩點:一是Repository的真實意圖沒有理解清楚,導致設計的紊亂,隨著專案的橫向和縱向擴充套件,

C#進階系列——DDD領域驅動設計初探(七):Web層的搭建

前言:好久沒更新部落格了,每天被該死的業務纏身,今天正好一個模組完成了,繼續來完善我們的程式碼。之前的六篇完成了領域層、應用層、以及基礎結構層的部分程式碼,這篇打算搭建下UI層的程式碼。 DDD領域驅動設計初探系列文章: 一、UI層介紹 在DDD裡面,UI層的設計也分為BS和CS,本篇還是以Web為

C#進階系列——DDD領域驅動設計初探(一):聚合

前言:又有差不多半個月沒寫點什麼了,感覺這樣很對不起自己似的。今天看到一篇博文裡面寫道:越是忙人越有時間寫部落格。呵呵,似乎有點道理,博主為了證明自己也是忙人,這不就來學習下DDD這麼一個聽上去高大上的東西。前面介紹了下MEF和AOP的相關知識,後面打算分享Automapper、倉儲模式、WCF等東西的,可是

DDD -- 領域驅動設計 -- 面向物件(OOA/OOD)的缺陷

OOA/OOD/OOP中,尤其是OOD/OOP,大家都不陌生,用了很多年。並且大部分人,都是從OOP開始,到了一定階段,會再去接觸OOD, 之後是OOA。 這樣用久了,自然而然會覺得“面向物件”是天經地義的,不太會去想面向物件有什麼問題所在。 而DDD裡面,

(DDD)領域驅動設計——認識領域驅動

什麼是領域Domain? 理解DDD,首先要理解領域。 通俗的說,領域就是業務;就是合格的產品經理的需求文件所表達的內容;狹義的說就是你的Business Layer裡所有的程式碼以及產生的影響等等; 嚴謹的定義是: 一個有邊界的業務面,其中包含業務概念,業務行

DDD領域驅動設計(Domain Driven Design)(轉)

摘要 本文將介紹領域驅動設計(Domain Driven Design)的官方參考架構,該架構分成了Interfaces、Applications和Domain三層以及包含各類基礎設施的 Infrastructure。本文會對架構中一些重要元件和問題進行討論,

DDD領域驅動設計基本理論知識總結

原文地址:http://www.cnblogs.com/netfocus/archive/2011/10/10/2204949.html 領域驅動設計之領域模型 加一個導航,關於如何設計聚合的詳細思考,見這篇文章。 2004年Eric Evans 發表Domain

DDD領域驅動設計:倉儲

# 1 前置閱讀 在閱讀本文章之前,你可以先閱讀: * 什麼是DDD * DDD的實體、值物件、聚合根的基類和介面:設計與實現 # 2 什麼是倉儲? 倉儲封裝了基礎設施來提供查詢和持久化聚合操作。 它們集中提供常見的資料訪問功能,從而提供更好的可維護性,並將用於訪問資料庫的基礎結構或技術與領域模型層分離。

DDD領域驅動設計領域事件

# 1 前置閱讀 在閱讀本文章之前,你可以先閱讀: * DDD領域驅動設計是什麼 * DDD領域驅動設計:實體、值物件、聚合根 * DDD領域驅動設計:倉儲 * MediatR一個優秀的.NET中介者框架 # 2 什麼是領域事件? 領域事件是在領域中發生的事,你希望同一個領域(程序)的其他部分了解它。 通知

領域驅動設計DDD)- 請先搞清楚一些概念

責任 可能 升級 是你 ora ext 計數 方法 避免 開發一個新系統   一般我們開始開發一個商業系統都需要做什麽?讀需求文檔去查找功能點,拆解任務。多數情況下,拆解項目是為了評估工作,做評估、分配任務到個人、設計數據庫結構,然後就開始了Coding。 所以,這種方

DDD領域驅動設計實踐 —— 架構風格及架構實例

讀取 bili 邏輯 stat orcal ransac 應用服務 業務場景 解讀 概述 DDD為復雜軟件的設計提供了指導思想,其將易發生變化的業務核心域放置在限定上下文中,在確保核心域一致性和內聚性的基礎上,DDD可以被多種語言和多種技術框架實現,具體的框架實現需要根據

DDD領域驅動設計實踐 —— 限界上下文識別

團隊協作 協作 tin 組織 領域 ges 承擔 產品 進行 本文從戰略層面街上DDD中關於限界上下文的相關知識,並以ECO系統為例子,介紹如何識別上下文。限界上下文(Bounded Context)定義了每個模型的應用範圍,在每個Bounded Context中確保領域模

領域驅動設計(DDD:Domain-Driven-Design)

因為我司框架是基於DDD+外掛的模式,基於學習需要所以初步學習了DDD,並且請教了DDD的專家寬寬大佬. DDD定義:領域模型應該捕抓“業務規則”或者“領域邏輯”(business rules/domain logic),而應用模型則捕抓“應用邏輯”(a