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

时间:2011-04-29 21:18:23

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

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

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

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

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

您有任何实施示例吗?

2 个答案:

答案 0 :(得分:10)

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

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

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

答案 1 :(得分:4)

我一直在寻找适当的(服务层,带有教义2和ZF的存储库)实施示例很长时间。
我发现这个最好的例子,应该可以帮助你完成工作 https://github.com/epixa/Forum/tree/master/application/user/src

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