剛開始使用DDD。我知道所有的域實體及其邏輯都應該保存在域層以及存儲庫接口中。在我的應用程序中,我將一些數據存儲在數據庫中,用於在運行時構建用戶界面(表示層)的一部分。在應用層或域層中,我應該在哪裏爲這些類型保留poco類和存儲庫接口。我無法做出決定,因爲這些對象不會有任何域相關的業務邏輯,但他們需要從數據庫中獲取水分,因此我使用EF來訪問數據,因此我需要實體和存儲庫,所以對我來說顯而易見的選擇是讓它們與域層中的所有其他實體和存儲庫接口,但會打破DDD規則DDD中的非業務邏輯數據庫訪問
0
A
回答
0
想到這一點的一個好方法是 - 如果您出於性能原因必須用存儲過程替換EF,則不應該修改域代碼。因此,任何需要在接口背後隱藏的東西都是可以替換的。
存儲庫可以是域邏輯的一部分。但是,不應該持久化的機制。這可以輕鬆地封裝到DAL服務或其他對象中,當然這些對象被編程爲IDALService接口。因此,當您需要切換持久性時(例如,從EF移動到NoSQL解決方案),您只需編寫一個實現IDALService接口的替代版本,那麼您就很好。存儲庫仍然可以執行其中的邏輯,但現在正在使用一種新的方式來存儲它們(這是一個控制反轉的想法)。
至於POCO對象,在DDD中真正的問題是它們代表什麼?他們是實體,需要堅持嗎?他們是否重視對象?不要讓技術(EF)確定您的對象模型的結構,而是提供轉換爲應用程序範圍的手段。
0
在應用程序層。保持域完整和孤立。
0
我想你已經回答了自己的問題:
在我的應用程序在數據庫中存儲一些數據,在運行 用於用戶界面的 結構部分(表示層)時間。
訪問用於服務UI的數據應封裝在表示層中。這與應用程序層的不同之處在於,DDD應用程序層通過編排存儲庫並委託給相應的實體和域服務來實現用例 - 它在您的域層周圍形成一個API。不同的演示實現可以使用相同的應用程序服務
但是,不同的表示層實現可能需要不同的數據。因此,將表示數據訪問直接放置在表示層中。這可以通過EF來實現,而不是DDD場景所獨有的。
相關問題
- 1. DDD - 業務決策是基於數據庫邏輯
- 2. C#業務邏輯,業務對象,數據訪問,項目
- 3. 適當的位置 - 業務邏輯或數據訪問
- 4. MVC業務邏輯訪問模型
- 5. 業務邏輯層和數據訪問層:循環依賴
- 6. 使用WCF數據訪問和業務邏輯層
- 7. 業務邏輯
- 8. 存儲庫和數據庫特定的業務邏輯
- 9. DDD中的數據訪問?
- 10. 關於分離問題的辯論(數據訪問vs業務邏輯)
- 11. 如何將業務邏輯存儲到數據庫中?
- 12. MVC DDD和投擲業務邏輯的錯誤
- 13. django models =業務邏輯+數據訪問?還是數據訪問層應該從django模型中分離出來?
- 14. ASP.NET業務邏輯
- 15. Android - 用於頻繁更新的數據庫與業務邏輯
- 16. 如何從業務邏輯中分離遠程數據訪問(通過http)邏輯?
- 17. 使用統一解耦數據訪問層的業務邏輯層
- 18. 處理一個一對多的業務邏輯和數據訪問層
- 19. 在ASP.Net中訪問HTTP頭核心業務邏輯
- 20. 物業訪問。邏輯在吸氣
- 21. 業務邏輯和服務
- 22. 數據庫約束是否映射到業務邏輯
- 23. 同步的業務邏輯
- 24. 如何訪問數據映射到業務邏輯對象實體框架
- 25. oo問題 - 混合控制器邏輯和業務邏輯
- 26. 業務邏輯+ ASP.NET MVC
- 27. 業務邏輯層設計
- 28. WCF業務邏輯處理
- 29. 業務邏輯設計
- 30. 分離業務邏輯