2010-08-12 148 views
1

我知道类似的问题已经发布过,但我有具体的要求,使我可以找到没有答案。MVC体系结构

该项目想要有一个典型的3层架构,但他们希望数据层被抽象为实体框架,表示层为MVC 2,应用层为简单类库。

这些组件(EF和MVC)是否适合该体系结构?

注意:该项目将遵循TDD方法。

任何帮助表示赞赏。

回答

3

绝对。

ASP.NET MVC Web应用程序的任何优秀演示/文章均遵循此体系结构。

通常您的解决方案应该是这样的:

YourProject.Model(类库与POCO的 - 域对象)

YourProject.Repository(类库与实体框架)。

YourProject.Services(类库作为库和控制器之间的中介)

YourProject.MVC(MVC2 Web应用程序)

YourProject.Tests(单元测试项目 - 每层通常为1个项目)

回答您的问题,Repository从其他模块抽取数据,表示层为MVC2,应用层可以内置到Services模块中,或者完全具有另一个模块。

当然,MVC与TDD非常吻合,您可以模拟您的控制器并测试类库,就像测试任何类库一样。

查看Rob Conery的MVC店面系列www.asp.net - 最佳视频系列之一曾见过。

祝你好运!

+0

因此,我的模型将在'YourProject.Model'中,因此MVC应用程序中的Models文件夹可以被清空/删除,并且我将ModelBinding添加到POCO的?最后,DataAnnotation属性也会出现在我的POCO上? – user295368 2010-08-12 23:51:46

+2

我喜欢将MVC中的模型文件夹添加到ViewModels(组合域对象以简化视图)。你可以在你的POCO上使用DataAnnotations,唯一的问题是你必须引用System.Web.Mvc程序集 - 有些人不喜欢这个,但我个人没有看到它的问题。仅仅因为你添加了一个通常在Web层上使用的程序集的引用,并不一定意味着你违背了任何架构主体。 – RPM1984 2010-08-13 00:08:42

-1

您应该看看ASP.NET MVC网站上的八节教程的ContactManager示例,它使用存储库类实现,因此数据层被抽象化。