2012-02-26 103 views
3

我一直在努力構建我的3層應用程序。我似乎總是會遇到我不想要的依賴性問題,這肯定表明我做錯了什麼。3層架構依賴關係

您通常如何構建您的3層架構?

我看到2的一個方法可以做到這一點:

  1. 業務層是在頂部(或底部,這取決於你如何看待它)廣告中的所有其他層依賴於它。業務層定義了執行工作所需的接口,特別是數據訪問。數據訪問層實現這些接口,並使用依賴注入將它們注入中間層。 UI同樣通過DI消耗輸出接口。業務對象是數據層填充的POCO。數據層沒有自己的代碼模型(它使用業務層中定義的業務對象)。業務層對UI或數據層,UI和數據層瞭解業務層都一無所知。
  2. 用戶界面層位於頂層,商業層層位於中層,數據位於底層。數據層發佈業務層消耗的接口。業務具有UI消耗的接口。這是一種1-2-3的情況。數據層定義了代碼對象,業務層有它自己的模型(類似於AutoMapper用來映射它們,但是這個映射是在業務層執行的)。數據層對Business或UI層一無所知。業務層瞭解數據層,但不瞭解UI層。 UI層知道業務層,但不瞭解數據層。

enter image description here

你使用了上述兩種?哪一個?爲什麼?你使用不同的方法?

我看到它的方式#1提供了一種以業務爲中心的方法。 UI可以隨數據層一樣輕鬆更改,而不會影響業務層。

第二個更直接,如果數據層發生變化,通常會要求業務層更改。當然,你可以用精心設計的接口來抽象它(像一個Repository模式,但需要改變的地方)。 UI可以改變而不影響任何一個。

+0

它的價值是什麼,我沒有看到任何一種方法的問題;都提供了良好的模塊化和抽象。我個人使用你描述的第二種方法,因爲它對我來說似乎更直接。 – 2012-02-26 10:15:34

+0

相關內容:http://jeffreypalermo.com/blog/the-onion-architecture-part-1/ – 2012-03-27 12:24:07

+0

3層概念的完美概述:http://www.exforsys.com/tutorials/application-development/什麼 - 是正tier.html – Jowen 2013-05-08 12:48:04

回答

0

如果它是一個小業務邏輯的CURD應用程序,請使用方法#2。否則,使用方法#1,它實際上是將控制反轉(IoC)應用於#2的結果。