gpt4 book ai didi

zend-framework - 服务层是否位于 Controller 和模型(映射器)之间?

转载 作者:行者123 更新时间:2023-12-04 06:53:33 26 4
gpt4 key购买 nike

我发现自己需要将一些功能移动到服务层。在这种特殊情况下,它与 example 相关。关于zend-paginator。
在示例中,服务层只是 Controller 和模型之间的中间阶段。似乎这是它的预期角色,在 certain circumstances 下这似乎很有意义。
不过,这对我提出了一些问题。
首先,我是否可以不那么容易地将示例服务代码移动到 Controller 而不会受到任何真正的惩罚,并且这不会通过删除一层代码而使我受益吗?
假设将代码移动到服务层有明显的好处,那么我的映射器交互的其余部分会发生什么? Controller 是否为某些任务访问服务层而为其他任务访问映射器,或者服务层是否成为所有映射器交互的代理?
对于诸如从表单创建新行之类的事情,服务层并没有增加任何值(value),因此它实际上相当于服务层级别的传递函数。
将它用于某些任务似乎会使以后的事情变得复杂,而将其用作代理似乎是我们故意引入代码复制和复杂性。
对“最佳实践”的任何澄清都会非常有帮助。

最佳答案

将代码移动到 Controller 会产生一个胖 Controller 。它将应用程序与 UI 紧密结合在一起。这使得在不同的上下文中执行该操作变得困难。瘦 Controller 通过使用一个或多个服务来处理特定上下文中的请求以生成响应。

这些服务通过以松散耦合的方式与模型交互来定义应用程序的边界(域逻辑),这种方式可以集成到不同的上下文中。

例如, Controller 与 MVC 应用程序中的服务层交互。控制台包装器可以与 cli 上的服务层交互。 SOAP 或 JSON-RPC 服务器可以使用反射将服务公开为 Web 服务 API。所有这些都可以在不复制代码的情况下完成。

关于zend-framework - 服务层是否位于 Controller 和模型(映射器)之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10176130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com