我们正在使用MVC模式构建一个网站。到目前为止,我们构建的所有页面都使用了必须对参考数据进行操作的模型(该数据在网站首次加载时被缓存)。 但现在我们已经到达了必须处理事务数据(特定于该流程)的流程阶段。到目前为止,我们通过提供所有数据来创建模型类,因为它们都已经缓存了。但是现在我们必须处理事务数据,我们应该做同样的事情,预先获取所有数据并创建模型对象,还是应该让模型类通过进行服务调用来获取数据。
如果您真正使用 MVC,那么您的控制器应该拦截应采取的特定操作,调用任何与数据相关的请求,并将数据推送到模型对象中,以便可以将模型放置到视图中。让模型从数据库自行填充几乎没有什么好处,因为您已经有了一个可以以更有凝聚力的方式完成这项工作的控制器。
在真正的 MVC 中,模型负责根据控制器的指令更新自身。因此,是的。模型,并且只有模型,应该进行服务调用
第一种方法的缺点是预先获取的数据可能永远不会被使用。因此,我们采用了模型获取数据的第二种方法。为了解耦模型和服务调用,我们使用了一个接口。欢迎替代方案。
模型对象是通过对数据库的查询来构建的。这是一般方法。
可以通过向其他服务器和数据库发出 Web 服务请求来构建模型对象。这几乎是同一件事。
如果为了某些性能调整,您预先构建了所有模型对象,那很好。这是特殊情况。
我更喜欢使用 ORM 层来处理对象缓存,所以我不预取任何东西。相反,它保留在 ORM 缓存中。