MVC 4 - 在哪里保留业务逻辑

Posted

技术标签:

【中文标题】MVC 4 - 在哪里保留业务逻辑【英文标题】:MVC 4 - where to keep business logic 【发布时间】:2013-04-01 17:32:48 【问题描述】:

我是第一次尝试实现 MVC。我也读过很多博客和一本专业的 mvc 书。现在,当我实施它时,我无法弄清楚我的一些业务逻辑应该放在哪里

我有使用 Linq to SQL 定义的域模型。我了解存储库模式用于向模型添加持久性。但是我无法决定将实际业务逻辑放在哪里。例如有一个特定的模型需要在保存之前检查是否有重复项。还有一些其他逻辑决定这个模型是否有资格被保存。你把这样的逻辑放在哪里?我应该把它放在存储库中吗?或者我应该在存储库之上插入一个业务层。

它看起来像

控制器 -> 业务逻辑 -> 存储库 -> DL

非常感谢任何帮助。

【问题讨论】:

创建一个逻辑层和数据层的三层项目 【参考方案1】:

如果项目不是太大我一般把业务逻辑放到主项目中的一个单独的项目中。如果您已经设置了它,您可以将它移动到存储库,或者您可以将数据上下文传递给助手以删除冗余并允许助手简单地查找某些情况并报告真或假响应。

如果项目非常大,我通常会将数据移动到自己的项目中,并引入数据访问层,例如 repo 或类似的,以允许客户端无需显式调用数据即可获取数据。

【讨论】:

感谢您的回复 - 所以本质上我的控制器将调用业务逻辑?控制器 -> 业务逻辑 -> 存储库 -> DL ??? 我不确定最好的表达方式,但是 Stack Overflow 上有很多问题可以更多地讨论这个问题,您可以研究一下它可能在哪里措辞更好。就我个人而言,我的控制器使用业务逻辑来执行一些测试,但它不必通过业务逻辑来获取数据,实际上我通常将数据上下文传递给业务逻辑并让逻辑执行功能。

以上是关于MVC 4 - 在哪里保留业务逻辑的主要内容,如果未能解决你的问题,请参考以下文章

MVC:把业务逻辑放在哪里? [关闭]

ASP.NET MVC 2 在哪里放置逻辑

使用具有 3 层架构的 MVC 模式

架构中MVC模型和业务逻辑层的区别

MVC 3 - 控制器和视图模型 - 哪个应该包含大部分业务逻辑?

将 LINQ 填充的 ViewModel 从业务逻辑层返回到控制器 - MVC