5

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

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

+Project.Controllers - 所有控制器类
P+项目.控制器.测试

+Project.Core - 实用类,包括重复性任务和一些配置处理程序(这个项目需要更好地充实)
+Project.Core.Tests

+Project.Models - 模型类、实体框架上下文和存储库类
+项目.模型.测试

+Project.Web - 所有视图和内容

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

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

4

3 回答 3

4

您可能想查看S#arp 架构项目使用的布局或Code Camp Server MVC 参考应用程序中使用的洋葱架构。这两个项目都由不同的人付出了很多努力,以便在 asp.net MVC 和域驱动设计的背景下很好地分离关注点。

于 2009-08-25T15:55:27.600 回答
1

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

  • 楷模
  • 意见
  • 控制器
  • 服务
  • 测试 - 每个项目一个。
于 2009-08-25T15:53:29.070 回答
0

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

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

希望有帮助,

于 2009-08-25T15:56:27.537 回答