我已经使用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解决方案?
答案 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)放在可能在同一个域上构建的其他应用程序中。这意味着您的下一个项目有一个非常有用的起点。
希望有所帮助,
丹