我設計使用由傑弗裏·巴勒莫描述的Onion Architecture ASP.NET MVC應用程序。洋蔥archicecture依賴關係:基礎設施和網絡通信
這是一個ASP.NET MVC 2.0項目中,我要求所有的視圖中使用專用的視圖模型是強類型的 - 我們不會通過域模型對我們的看法。我們使用AutoMapper進行翻譯 - AutoMapper在基礎架構中是孤立的,Web不知道或在意使用AutoMapper。
目前,我定義Web項目的IViewModelMapping接口 - 僅僅是因爲該服務將通過控制器一起使用,它有它自己的視圖模型的直接訪問。這樣接口就可以訪問域模型(Core)和視圖模型(Web)。
爲了提供IViewModelMapping接口的實際實現,我在基礎結構項目中創建了一個ObjectMapping命名空間,它將實際的映射實現與洋蔥的基礎設施隔離。在這樣做的時候,這需要基礎架構依賴於核心和網絡。
我的問題是:因爲這兩個項目在技術上對洋蔥的郊區(在同一層) - 是一個項目允許對在該層其他項目的依賴?有沒有人注意到這個設計有任何潛在的缺陷?
另一種設計將是IViewMapper接口移動到核心 - 但這是不可能的,因爲核心不具有訪問視圖模型類。我也可以將視圖模型移動到Core中,但我覺得他們不屬於那裏,因爲它們是特定於UI層的。
建議的體系結構如下所示 - 請注意,基礎結構對Core和Web具有依賴性。 Web仍然是孤立的,只能訪問Core業務邏輯。
http://www.matthidinger.com/images/onion-arch.png
你選擇和工作的最終設計是什麼?有趣的是看到用映射的某些類結構更新的圖:) – 2013-11-26 11:20:02
問:爲什麼_Dependency Resolution Layer_對_Web Layer_有依賴關係? _Controllers_不應該依賴於_Dependency Resolution Layer_? – a11smiles 2015-05-02 22:43:08