在一個分層的應用程序中,讓你在共享層中定義實體是否好的做法?我想我會在所有圖層中使用它們。還是他們屬於業務層?分層應用程序中的共享層中的實體(橫切關注)?
MSDN's layered application guideline把業務實體在業務層
的Layered Architecture Sample for .NET放實體共享層
難道是這樣嗎?
- 介紹
- 業務
- 數據
- 共享
- 實體
還是必須是這樣的
-
個
- 介紹
- 業務
- 實體
- 數據
- 共享
做什麼,爲什麼?
在一個分層的應用程序中,讓你在共享層中定義實體是否好的做法?我想我會在所有圖層中使用它們。還是他們屬於業務層?分層應用程序中的共享層中的實體(橫切關注)?
MSDN's layered application guideline把業務實體在業務層
的Layered Architecture Sample for .NET放實體共享層
難道是這樣嗎?
還是必須是這樣的
做什麼,爲什麼?
我平時組織項目結構如下:
業務層
DAL數據訪問服務層
我會說這取決於如果這些實體包含業務邏輯或沒有。
從分層應用指南:
業務實體也驗證包含的實體 內的數據和封裝業務邏輯,以確保一致性,並實現 業務規則和行爲。
相比之下,Layered Architecture Solution Guidance似乎依靠代碼生成創建實體,它們僅僅是數據的容器很少在他們沒有邏輯。
Rich domain entities傾向於不在共享模塊中,因爲這意味着攜帶大量您不希望每個人都擁有的行爲(想象能夠直接在客戶端操縱業務邏輯......)相反,貧血是輕量級的,並且可能在各處愉快而方便地分佈。
我的方法有點不同。在數據層中,我存儲所有實體,並在共享層中擁有DTO對象(Domain Transfer Objects),它們是實體的精確副本,但沒有實體框架控件。爲了映射對方,我使用了流暢且易於使用的mapper(AutoMapper)。
我不明白爲什麼實體框架不支持接口,只使用實例。