2011-03-07 36 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