ASP.NET MVC - 解决方案布局建议

时间:2009-08-25 15:45:46

标签: asp.net-mvc separation-of-concerns

我已经使用ASP.NET MVC几个月了,我对项目解决方案的布局仍然不满意。我正在尝试构建一个尽可能便携且可重用的中型网站CMS,并且在设计中存在一些明显的问题。我正在寻找一些关于如何构建我的解决方案的建议,考虑到关注点的分离。我找到了a similar question here,但它并没有真正针对我面临的一些问题。

现在这就是我的解决方案的布局:

+Project.Controllers - All Controller classes
P+roject.Controllers.Tests

+Project.Core - Utility classes including repetitive tasks and some configuration handlers (this project needs to be better fleshed out)
+Project.Core.Tests

+Project.Models - Model classes, Entity Framework context, and Repository classes
+Project.Models.Tests

+Project.Web - All Views and Content

我目前缺少的一个主要问题是坚持我的业务逻辑,我觉得我错误地将业务逻辑放在我的存储库类中,并将其混合在控制器操作中。显然,我非常清楚这个问题,我只是不确定将业务逻辑放在解决方案布局中的哪个位置。我的解决方案结构是否需要更改,还是可以在我的模型项目中安全地保留该业务逻辑?另外,我真的不喜欢我的EF上下文在Models类中,但我不知道如何将数据层代码与模型中所需的实体类隔离。

其他人如何布置他们的生产ASP.NET MVC解决方案?

3 个答案:

答案 0 :(得分:4)

您可能希望查看S#arp architecture project使用的布局或onion architecture MVC参考应用程序中使用的Code Camp Server。这两个项目已经由不同的人投入了大量精力,以便在asp.net MVC和域驱动设计的背景下得到很好的关注。

答案 1 :(得分:1)

就个人而言,我只是在学习MVC。我的经验来自ASP.NET WebForms,但我会使用您提供的链接中提出的布局。第二个答案是:

  • 模特
  • 观看次数
  • 控制器
  • 服务
  • 测试 - 每个项目一个。

答案 2 :(得分:0)

我会将模型中的EF上下文和存储库带入数据访问层Project.Data,并将业务对象放在Project.BusinessLogic(?)中。

这样可以将两个程序集(Project.Data和Project.BusinessLogic)放在可能在同一个域上构建的其他应用程序中。这意味着您的下一个项目有一个非常有用的起点。

希望有所帮助,