模型是不是应该调用服务来获取数据

Posted

技术标签:

【中文标题】模型是不是应该调用服务来获取数据【英文标题】:Should Model make service calls to get data模型是否应该调用服务来获取数据 【发布时间】:2010-09-14 21:00:08 【问题描述】:

我们正在使用 MVC 模式构建一个网站。到目前为止,我们构建的所有页面都使用了必须对参考数据进行操作的模型(这些数据在网站第一次加载时被缓存)。 但是现在我们已经到了必须处理事务数据(特定于该流程)的流程阶段。到目前为止,我们通过提供所有数据来创建模型类,因为它们都已经被缓存了。但是现在我们必须处理事务数据,我们应该做同样的事情,即我们预先获取所有数据并创建一个模型对象,还是应该让模型类通过调用服务来获取数据。

【问题讨论】:

【参考方案1】:

如果您真的在使用 MVC,那么您的控制器应该拦截应该采取的特定操作,调用任何与数据相关的请求,并将数据推送到您的模型对象中,以便随后可以将模型放入视图中.让模型从数据库中自行填充几乎没有什么好处,因为您已经有了一个控制器,它可以以更有凝聚力的方式完成这项工作。

【讨论】:

【参考方案2】:

在真正的 MVC 中,模型负责更新自身以响应来自控制器的指令。因此,是的。模型,并且只有模型,应该进行服务调用

【讨论】:

【参考方案3】:

第一种方法的缺点是可能永远不会使用预先获取的数据。所以我们采用了模型获取数据的第二种方法。为了解耦模型和服务调用,我们使用了一个接口。欢迎使用替代品。

【讨论】:

这不是真正的答案。这更像是对您原始问题的编辑。您可能想要编辑您的问题并添加它。【参考方案4】:

模型对象是通过对数据库的查询来构建的。这是一般的方法。

模型对象可以通过对其他服务器和数据库的 Web 服务请求来构建。这几乎是一样的。

如果——为了一些性能调整——你预先构建了所有的模型对象,很好。这是一个特例。

我更喜欢使用 ORM 层来处理对象缓存,所以我不预取任何东西。相反,它保留在 ORM 缓存中。

【讨论】:

以上是关于模型是不是应该调用服务来获取数据的主要内容,如果未能解决你的问题,请参考以下文章

模型视图控制器:控制器或模型是不是从服务器获取数据?

服务端调用接口实例

Linux学习_UDP编程

GraphQL 是不是会在失败时取消数据获取?

模型应该包含哪些方法

如何使用 Django 模型在网页上获取动态数据?