上一篇介紹了值對象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意見。這其實是很自然的事情,設計本來就充滿了各種可能性,沒有絕對正確的做法,只有更好的實踐。但是設計與實踐的好與壞,對於不同的人,以及處於不同的環境都有不同的詮釋,這是一個仁者見仁,智者見智的問題。DDD非常抽象 ...
前一篇介紹了倉儲的基本概念,並談了我對倉儲的一些認識,本文將實現倉儲的基本功能。 倉儲代表聚合在內存中的集合,所以倉儲的接口需要模擬得像一個集合。倉儲中有很多操作都是可以通用的,可以把這部分操作抽取到基類中。 在Util.Domains項目中創建一個文件夾Repositories,這個文件夾用來放倉儲相關的接口。在Repositories下創建一個倉儲接口IRepository。 把倉儲基接口放 ...
2014-12-17 17:00 12 5108 推薦指數:
上一篇介紹了值對象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意見。這其實是很自然的事情,設計本來就充滿了各種可能性,沒有絕對正確的做法,只有更好的實踐。但是設計與實踐的好與壞,對於不同的人,以及處於不同的環境都有不同的詮釋,這是一個仁者見仁,智者見智的問題。DDD非常抽象 ...
前面已經介紹過Entity Framework的工作單元和映射層超類型的封裝,從本文開始,將逐步介紹倉儲以及對查詢的擴展支持。 什么是倉儲 倉儲表示聚合的集合。 倉儲所表現出來 ...
上一篇,我介紹了自己在DDD分層架構方面的一些感想,本文開始介紹領域層的實體,代碼主要參考自《領域驅動設計C#2008實現》,另外參考了網上找到的一些示例代碼。 什么是實體 由標識來區分的對象稱為實體。 實體的定義隱藏了幾個信息: 兩個實體對象,只要它們的標識屬性值相等 ...
上一篇介紹了工作單元層超類型的封裝演化過程,本文將介紹對Entity Framework映射層超類型的封裝。 使用Entity Framework一般需要映射三種類型的對象,即實體、聚合、值對象。 聚合與實體映射的主要區別是:聚合映射單屬性標識Id,並需要映射樂觀離線鎖 ...
在應用程序框架實戰十四:DDD分層架構之領域實體(基礎篇)一文中,我介紹了領域實體的基礎,包括標識、相等性比較、輸出實體狀態等。本文將介紹領域實體的一個核心內容——驗證,它是應用程序健壯性的基石。為了完成領域實體的驗證,我們在前面已經准備好了驗證公共操作類和異常公共操作類。 .Net提供 ...
前面介紹了DDD分層架構的實體,並完成了實體層超類型的開發,同時提供了驗證方面的支持。本篇將介紹另一個重要的構造塊——值對象,它是聚合中的主要成分。 如果說你已經在使用DDD分層架構,但你卻從來沒有使用過值對象,這毫不奇怪,因為多年來養成的數據建模思維已經牢牢把你禁錮,以致於你在使用 ...
一、什么是實體 由標識來區分的對象稱為實體。 實體的定義隱藏了幾個信息: 兩個實體對象,只要它們的標識屬性值相等,哪怕標識屬性以外的所有屬性值都不相等,這兩個對象也認為是同一個 ...
上一篇介紹了DDD聚合以及與並發相關的各種鎖機制,本文將介紹另一個核心元素——工作單元,它是實現倉儲的基礎。 什么是工作單元 維護受業務事務影響的對象列表,並協調變化的寫入和並發 ...