2011-03-07 59 views
0

所以我一直在努力抓住這個概念,但我正在取得進步:)DDD/SoC w/Ninject設計問題?

無論如何,我有一個問題,使用服務/知識庫/ UnitOfWork/EF 4 w/POCOS方法。

我的MVC應用程序可以引用我的Repository層,即引用System.Data.Entity,將Ninject中的綁定設置爲生活在那裏的具體類,並且只要我使用Interface驅動設計,不會綁定我的MVC應用程序到EF。正確?

只需通過參照引用System.Data.Entity的組件,你是不是綁你的MVC應用程序EF?

如果我錯了,可有人請告訴我如何將接口綁定到具體的類在MVC應用程序庫和unitfowork在Ninject模塊。

任何意義?

+0

我認爲它是一個依賴關係樹。在你的情況下,root是mvc應用程序。根可以和它的孩子談話(存儲庫層)。但是爲了一切工作,根的所有後代必須存在。 – driushkin 2011-03-07 17:49:15

回答

3

僅僅通過引用一個引用System.Data.Entity的程序集,你不是將你的MVC應用程序綁定到EF?

是的,你在捆綁它,但不應該打擾你。該MVC應用程序是主機應用程序,它是所有層和組件需要被聚合到部署在Web服務器上,只是工作的最終產品。傑弗裏巴勒莫有一個關於洋蔥建築的nice blog post,你可以看看。在這種模式中,洋蔥的外層知道內層而不是相反(內層不應該知道外層)。 ASP.NET MVC應用程序是最外層的。然後,您可以簡單地使用其他一些主機應用程序(例如WPF)更改外層並重新使用內層。

+0

是的,我看了洋蔥建築,不管信不信,它對我來說完全有意義,我只是繼續在我的腦海中說這個東西維護IoC,MVC應用程序無法知道任何其他東西直接在它下面,但在洋蔥體系結構中,它恰恰相反,實際上可以引用下面的任何圖層。因此,故事的道德,可以從MVC應用程序引用存儲庫層,事實上,你必須糾正? – Sam 2011-03-07 17:46:42

+1

@Sam Striano,你必須參考彙編參考。但是,當然,你的控制器永遠不應該知道它的任何內容,只能用它的抽象。 – 2011-03-07 19:33:36

+0

我覺得它終於點擊了!感謝您的幫助,您是一位紳士和學者! – Sam 2011-03-07 20:33:34