【问题标题】:Using Doctrine 2 and Repositories, what would be the purpose of a Service Layer?使用 Doctrine 2 和存储库,服务层的目的是什么?
【发布时间】:2011-08-15 19:13:22
【问题描述】:

我正在设计我的应用程序,我正在使用 Doctrine 2 和 Zend Framework。

目前,我已经编写了我所有的实体,我将开始编写存储库,并且我想到了服务,我想知道我的服务层是否不会重复存储库。

在我使用 Doctrine 2 存储库时编写服务层是否值得?

但是,我在这里和那里读到,例如可以使用服务层进行缓存。

你有实现的例子吗?

【问题讨论】:

  • 您还需要有关服务层的更多信息吗?

标签: zend-framework design-patterns web-applications service doctrine-orm


【解决方案1】:

存储库和服务之间的区别在于,我让我的服务接受数据数组以进行更新、创建等。IIRC,真正的存储库应该只处理域对象。例如,您可以做的另一件事是使用您的服务层来处理产品缩略图的生成、个人资料图片或缓存等。关键是服务与处理 Doctrine 实体并不严格相关。

我仍然使用自定义存储库作为我所有自定义查询的容器,以及其他的;它在我的服务类中被使用,有时直接在我的控制器中使用。虽然我使用我的服务进行序列化(用于 JSON 响应)。

仍然有一个小的灰色区域应该在哪里,你只需要感受一下。归根结底:如果您不考虑服务层并将该逻辑放入您的存储库中,那么维护和可扩展性方面的工作仍然不会太多,只是在类责任中的定义更少。

【讨论】:

  • 差不多就是这样。通常,您将任何自定义 DQL 查询作为方法放入存储库中。然后,将任何其他逻辑放入服务中。通常,您将投入服务的内容会写入 ZF 中的控制器操作中,因此实际上取决于您是否需要/是否需要分离。这很有用,尤其是。如果您发现自己在控制器中重复逻辑 - 那么这通常表明需要为其提供服务。
  • 好的,谢谢您的回答,错误处理呢,在这样的架构中我们应该在哪里处理异常?
  • The point is that they actually strictly are related to using Doctrine 什么是严格?存储库?
【解决方案2】:

我一直在寻找合适的(服务层、带有学说 2 和 ZF 的存储库)实现示例。
我发现这个最好的示例应该对您的工作有所帮助
https://github.com/epixa/Forum/tree/master/application/user/src

还有一点,http://martinfowler.com/eaaCatalog/serviceLayer.html 这将有助于理解服务层的理论部分

【讨论】:

    猜你喜欢
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2012-10-02
    • 2012-02-13
    • 2011-04-02
    • 2017-09-19
    • 2018-04-16
    相关资源
    最近更新 更多