【发布时间】:2011-03-29 05:14:17
【问题描述】:
我知道以前曾发布过类似的问题,但我有具体的要求,所以我发现没有答案。
项目希望有一个典型的3层架构,但是他们希望数据层被Entity Framework抽象出来,表现层是MVC 2,应用层是简单的类库。
这些组件(EF 和 MVC)是否适合该架构。
注意:该项目将遵循 TDD 方法。
感谢任何帮助。
【问题讨论】:
我知道以前曾发布过类似的问题,但我有具体的要求,所以我发现没有答案。
项目希望有一个典型的3层架构,但是他们希望数据层被Entity Framework抽象出来,表现层是MVC 2,应用层是简单的类库。
这些组件(EF 和 MVC)是否适合该架构。
注意:该项目将遵循 TDD 方法。
感谢任何帮助。
【问题讨论】:
您应该在 ASP.NET MVC 网站上查看 ContactManager 示例和八节教程,它是使用存储库类实现的,因此数据层是抽象的。
【讨论】:
绝对的。
关于 ASP.NET MVC Web 应用程序的任何好的演示/文章都遵循此架构。
您的解决方案通常如下所示:
YourProject.Model(带有 POCO 的类库 - 域对象)
YourProject.Repository(带有实体框架的类库)。
YourProject.Services(类库充当存储库和控制器之间的中介)
YourProject.MVC(MVC2 网络应用)
YourProject.Tests(单元测试项目 - 通常每层 1 个项目)
为了回答您的问题,Repository 从其他模块中提取数据,表示层是 MVC2,应用层可以内置到 Services 模块中,也可以完全包含另一个模块。
当然,MVC 非常适合 TDD,您可以像测试任何类库一样模拟控制器并测试类库。
在 www.asp.net 上查看 Rob Conery 的 MVC Storefront 系列 - 我见过的最好的视频系列。
祝你好运!
【讨论】:
YourProject.Model,因此 MVC 应用程序中的 Models 文件夹可能为空/删除,我将我的 ModelBinding 到 POCO 的吗?最后,DataAnnotation 属性也会出现在我的 POCO 上?