【问题标题】:MVC ArchitectureMVC 架构
【发布时间】:2011-03-29 05:14:17
【问题描述】:

我知道以前曾发布过类似的问题,但我有具体的要求,所以我发现没有答案。

项目希望有一个典型的3层架构,但是他们希望数据层被Entity Framework抽象出来,表现层是MVC 2,应用层是简单的类库。

这些组件(EF 和 MVC)是否适合该架构。

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

感谢任何帮助。

【问题讨论】:

    标签: asp.net-mvc architecture


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      绝对的。

      关于 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 上?
      • 我喜欢保留 MVC 中的 Models 文件夹,只为 ViewModels 添加(组合域对象以简化视图)。您可以在 POCO 上使用 DataAnnotations,唯一的问题是您必须引用 System.Web.Mvc 程序集 - 有些人不喜欢这个,但我个人认为它没有问题。仅仅因为您添加了对通常在 Web 层上使用的程序集的引用,并不一定意味着您违反了任何架构原则。
      猜你喜欢
      • 2011-02-08
      • 1970-01-01
      • 2018-08-30
      • 1970-01-01
      • 2012-08-02
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多