首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务层位于控制器和模型(映射器)之间吗?

服务层位于控制器和模型(映射器)之间吗?
EN

Stack Overflow用户
提问于 2012-04-16 22:33:24
回答 1查看 670关注 0票数 3

我发现自己需要将一些功能转移到服务层中。在本例中,它与zend-paginator相关的example有关。

在本例中,服务层只是控制器和模型之间的过渡阶段。这似乎是它想要的角色,在certain circumstances下似乎很有意义。

不过,这给我提出了一些问题。

首先,我能不能简单地将示例服务代码移动到控制器,而不会有任何实际的惩罚,这不是通过删除一层代码而使我受益的吗?

假设将代码移动到服务层有实际的好处,那么我的映射器交互的其余部分会发生什么呢?控制器是否为某些任务访问服务层,为其他任务访问映射器,或者服务层随后成为所有映射器交互的代理?

对于诸如从表单创建新行之类的事情,服务层不会添加任何值,因此它实际上相当于服务层级的传递函数。

在某些任务中使用它似乎会使事情变得复杂,而使用它作为代理似乎是我们故意引入代码复制和复杂性。

任何关于“最佳实践”的澄清都会非常有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-17 16:26:11

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10176130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档