我必须在哪里包含我的应用程序的业务逻辑? [关闭]

Posted

技术标签:

【中文标题】我必须在哪里包含我的应用程序的业务逻辑? [关闭]【英文标题】:Where I must contain business logic of my application? [closed] 【发布时间】:2019-10-16 21:59:50 【问题描述】:

看了很多关于正确架构应用的文章,我还是有一个疑问:应用的业务逻辑必须包含在哪里? 因为有人告诉,逻辑必须包含在模型(瘦控制器)中,另一个人说模型必须只包含数据库操作逻辑。

例如:

在我的项目(在线商店)中,我有一个产品过滤器,它在 CategoryController 中使用并由 Products 和 Parameters 表过滤。所以它不是控制器,也不是模型。我通过创建名为 Filters 的新目录来解决它(是的,有几个不同的过滤器),并在那里包含所有逻辑。 但我不知道这是正确的解决方案吗?我认为不是,但我不知道如何正确构建它。

所以这是我的问题:

    我做对了吗? 我必须在哪里包含业务逻辑?

谢谢,祝你有美好的一天!

附言 对不起我的英语。

【问题讨论】:

与您的俄语版本的问题相同 - 主要基于意见 你的项目是什么框架(网店) 抱歉,忘记了。 Laravel 【参考方案1】:

这取决于偏好。只要你使用正确的标准,你应该没问题!

所以在 Laravel 中,我将 Models 严格用于数据库操作。我还创建了一个名为 Services 的文件夹和另一个名为 Hydrators 的文件夹

我在服务文件夹中的服务处理业务逻辑,例如从模型中获取数据和任何逻辑操作。我的 hydrator 获取数据并按照我希望将数据呈现给视图的方式对其进行排序。

我的服务和 hydrator 都使用 Single Responsibility Principle,因为这允许我在其他地方重用相同的代码以避免代码重复!

我的控制器只是后端的入口点,只做两件事;调用服务并将所需的服务拼接在一起并返回结果(结果可以是从 JSON 到带有数据的视图的任何内容)。

这只是我个人的做事方式。其他人可能有不同的方式。

【讨论】:

感谢您如此详细的回复。我会尝试使用你的技术。

以上是关于我必须在哪里包含我的应用程序的业务逻辑? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

干净的架构——在哪里放置输入验证逻辑? [关闭]

Django:将业务逻辑与视图逻辑分离

在 MVC 架构中将业务逻辑保留在哪里?

将两个相关对象的业务逻辑放在哪里?

DAO 和业务逻辑 [关闭]

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