什么是asp.net中有点大的网站推荐的解决方案结构

时间:2011-07-28 20:55:54

标签: asp.net asp.net-mvc visual-studio projects-and-solutions separation-of-concerns

我目前正在尝试重构一个根本没有任何分离的项目(asp.net mvc)。只是文件夹:s

  • 该项目有一堆EF Code First类(People.cs,Exam.cs, Message.cs等)
  • 该项目有几个存储库(都使用EF Data 上下文)
  • 当然还有很多控制器和视图模型

我们有一个测试项目,但我们并不擅长TDD,所以它不是我们现在所做的事情。

我希望能够更清楚地分离项目必须解决的不同责任,并希望对实现这一目标的良好项目结构提出一些建议。

请帮忙。 提前谢谢

2 个答案:

答案 0 :(得分:12)

我建议遵循域驱动设计(DDD),建议的方法是创建以下项目:

Company.Project.Web< - 您的MVC应用程序,尽管您仍然可以使用WebForms Company.Project.Domain< - 数据传输对象(DTO),ViewModel,业务逻辑,事件 Company.Project.Data< - 存储库接口

Company.Project.Data.EF< - EntityFramework特定存储库的实现 Company.Project.Model< - 您的EF CodeFirst类

Company.Common< - 公用事业和/或扩展的常见项目

我建议您从模式和实践团队中查看Project Silk http://silk.codeplex.com/。 DDD,Repository和MVC的很好的参考实现,以及HTML 5和jQuery(vNext)的混合。

答案 1 :(得分:11)

我们使用与jdmonty提到的类似的设计,但有点简单。我们执行以下操作:

  • ApplicationName.Web - MVC应用程序
  • ApplicationName.Services - 业务逻辑
  • ApplicationName.Domain - EF CodeFirst类和存储库 对他们采取行动
  • ApplicationName.Common - 多个使用的类和实用程序 项目
  • ApplicationName.Tests - 测试各种项目

Web项目依赖于Services项目。 Services项目依赖于Domain项目。