2013-02-20 73 views
1

我想在我的項目中使用DDD \ CQRS \ ES。我剛開始使用它,所以我沒有太多的經驗。我知道現有核心域名,支持域名和CRUD域名。我的核心領域涉及到CRUD數據。例如訂單中有很多業務規則,但它包含有關遞送公司,接收點等的基本信息。在DDD ES CQRS中的應用程序的CRUD部分

這些信息由管理員管理。在我看來,我應該使用crud方法,但是當我需要回滾事件時會發生什麼?

系統將存儲混合數據 - 從事件源和實際從應用程序的crud部分恢復。我最終會得到不一致的數據。例如,訂單可能由不存在的公司維護(該公司在管理員已經交付包時已刪除,但在回滾訂單仍處於活動狀態時) 在每個項目中都有部分CRUD數據,因此您如何處理此問題? 我應該存儲公司活動嗎?

此外,當我加入新秩序,我應該通過發送事件的公司名稱和ID,因爲當林改造我ReadStore,有可能不是公司數據庫中,所以我不能從倉庫

PS得到的companyName 。你知道任何CRUD框架來處理簡單的CRUD操作嗎?

PS.2您是否知道ES/CQRS方法中包含應用程序的CRUD部分的任何示例opensource項目?


好的。也許我形容它太複雜了。我只是想知道:

  • 如何實現應用程序的最簡單的部分(業務不佳 邏輯 - 主要是CRUD操作),當我保存我的核心域 事件存儲,我希望能夠恢復 以前的狀態我的核心域

  • 我應該在事件存儲中存儲crud操作嗎?

  • 如何在回滾事件存儲後提供數據一致性?

  • 您推薦哪種CRUD框架用於Java應用程序?

回答

-1

我不到底你去問問,但如果它涉及DDD和CRUD操作,Cocktail framework可以幫助你,雖然我還沒有嘗試過我自己。

1

我認爲這是處理DDD時的一個常見問題,尤其是在處理ES時。這聽起來很簡單,但您需要查找的是域中有界的上下文。事實證明,這種有界的上下文很好地映射到來自SOA的服務。現在,當你進入SOA時,你意識到並不是所有的服務(SOA中的服務都不像Web/Windows服務中的服務)需要實現相同。

根據我的經驗,您總是會有一些服務主要處理CRUD操作和很少的業務邏輯,通常由管理員/特殊用戶使用的應用程序使用。這些服務可以並且應該儘可能以最小的努力來實現,沒有CQRS和ES,也沒有過度複雜化。只要確保他們在發生事情時發佈相關消息。

我強烈推薦Eric Evans - what i've learned about DDD since the book video

而且烏迪大漢有關於SOA的一些非常非常好的影片,什麼SOA意味着:Avoid a failed SOAUdi on SOA

我知道這是不是真正回答你的問題的所有細節,但我希望它會指向您在正確的方向。

0

爲什麼不簡單地將CRUD部分視爲僅作爲附加對象(可能允許更新)或將足夠的數據複製到事件中以使重要數據不會丟失?