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

Posted

技术标签:

【中文标题】ASP.NET MVC 2 在哪里放置逻辑【英文标题】:ASP.NET MVC 2 Where to put logic 【发布时间】:2011-06-03 14:46:12 【问题描述】:

我有一个 ASP.NET MVC 2 应用程序,其中包含一些复杂的业务规则,我正在尝试决定将特定逻辑放在哪里。

创建记录时会发生逻辑,基于该记录的某些字段需要创建其他记录。

我目前正在使用带有 ORM 的存储库模式,最简单的放置这个逻辑的地方是我的存储库类,但我觉得这是一个非常薄弱的​​位置,有重要的规则,我会直接把它放在我的具有我的验证和元数据的部分模型类,但我必须在我的控制器或存储库中调用方法,这可能会将太多关于实现的知识扩展到这些层。

您对我有哪些最佳实践建议?

谢谢!

【问题讨论】:

【参考方案1】:

您可以在控制器和存储库之间有一个服务层。存储库对您的模型执行简单的 CRUD 操作。一个服务方法可以利用多个简单的存储库调用来组成一个业务操作。此业务操作将暴露给控制器。

【讨论】:

当您说服务层时,它是作为 WCF/数据服务/等实际服务实现的,还是只是控制器和存储库之间的另一层代码/类?如果是这样,您通常会为模型中的每个实体提供一个服务类吗?你知道使用这种模式的好例子吗?我已经看到了一些使用 MVC 的存储库模式的示例,但没有使用服务层(或者它可能在那里但我没有注意到)。

以上是关于ASP.NET MVC 2 在哪里放置逻辑的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc 在哪里设置默认文化?

在哪里可以找到好的 ASP.NET MVC 示例? [关闭]

Asp.Net Core MVC 中的 Request.IsAjaxRequest() 在哪里?

在 ASP.NET MVC 框架中验证已发布的表单数据

在哪里可以找到在 ASP .NET MVC2 中实现密码恢复的 C# 示例代码

ASP.NET MVC 学习