使用Doctrine 2和Repositories,服务层的目的是什么?

Joh*_*hnT 8 service design-patterns zend-framework web-applications doctrine-orm

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

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

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

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

你有任何实现的例子吗?

Cob*_*bby 10

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

我仍然使用自定义存储库作为我所有自定义查询的容器,什么不是; 它在我的服务类中消耗,偶尔直接在我的控制器中消耗.虽然我使用我的服务进行序列化(用于JSON响应).

还有一个小的灰色区域,应该在哪里,你只需要感受它.在一天结束时:如果你省略了服务层并将该逻辑放入你的存储库中,那么维护和可扩展性的工作仍然不会那么多,只是在类责任中的定义较少.

  • 这就是它.通常,您将任何自定义DQL查询作为存储库中的方法.然后,将任何其他逻辑放入服务中.通常你会把什么服务写入ZF中的控制器动作,所以真正取决于你是否想要/需要分离.这很有用.如果您发现自己在控制器中复制了逻辑 - 那么它通常是需要为其提供服务的标志. (5认同)