2012-07-05 133 views
1

我有四個組件; UserInterface,BusinessLogic,DataAccess,Common。UI應該引用存儲庫嗎?

用戶界面引用DataAccess中的存儲庫,這是不好的做法?我應該在BusinessLogic中創建傳遞方法,以便UserInterface不耦合到DA程序集?

即使在BusinessLogic方法只會調用相關Repository方法的情況下,也是如此?

或者我是懸掛式的?

+2

你正在迂腐。 – Oded 2012-07-05 19:50:34

回答

2

而不是想到用戶界面與存儲庫交談,可以考慮取決於抽象的實現。在這種情況下,UI取決於IRepositoryIRepository如何實施並不重要。

並將這些全部放入單獨的組件是矯枉過正。只是使用命名空間來隔離你的代碼。維護起來會容易得多。

+0

我想我已經看到我是如何將這個問題引向混亂的,稱DA層爲存儲庫是一個壞主意,因爲它不僅僅是一個回購。編輯的問題。我想我明白你的意思,我應該把我的Irepo移到共同的議會。 – 2012-07-05 20:13:20

+0

否,除非有多個組件的物理需求,使所有組件在一個組件中保持簡單。理想情況下,存儲庫在域內具有高度特定性,而不是「普通」實用程序。 – 2012-07-06 12:27:34

0

我認爲分層結構的主要原因是'分離關注'。 SoC基本上提供鬆散耦合。所以在DAL中引用UI並不是好事。

另一方面,UI應該照顧用戶交互(不直接從DAL調用)。 BL應該負責驗證並調用DAL方法。 DAL是最後一步,它可以根據SQL方面驗證數據,然後處理SQL語句。

1

我想你缺少一個圖層。實體層或數據傳輸層。

這不是一個好的做法,用戶界面必須知道關於DAL的信息,這就是爲什麼您擁有業務層。

我認爲你應該做它的經典方式UI - BL - DAL和向後應該是一樣的,使用數據傳輸對象

這些層之間始終使用DTO,傳輸從UI到BL對象,從BL到DAL並且以這種方式向後。

相關問題