适用于Api-Admin-Client应用程序的最佳ZF2架构

时间:2013-11-15 16:23:09

标签: php zend-framework2 zend-framework-mvc zend-framework-modules

我有一个使用精益启动方法开发的ZF1项目。我现在准备进入一个更加进化的项目,因为我知道我的用户想要什么,但我真的想用更好的技术开发。我出于支持原因决定从ZF1转到ZF2,这就是我所在的地方:

API(客户端) - 我有一个“推送”API,用户可以使用它向我发送数据 API(管理员) - 管理员可以使用各种指标和聚合来使用推送的数据

客户端API非常安静,但目前只是推送到Redis作业队列,并通过cron进行处理。这消除了客户端等待插入数据并立即返回其请求的需要。

管理员API目前并不安静,实际上只在应用程序内部使用。我认为这是可以的,因为我不想让单个页面前端或API消耗前端。我希望服务器立即返回数据。

这让我想到我是否有一个API服务模块,它提供了所有模型(Doctrine2 ODM POPO),映射器,过滤器和服务层来访问它,然后需要它的控制器可以消耗没有发出HTTP请求的API(通过服务调用)。

这是正确的结构方式还是有更精致和可接受的方法?我一般喜欢服务层,因为测试会更准确,所有客户/管理员都使用相同的API(如果更新它基本上会立即全面更新,因为没有单独的项目)。

1 个答案:

答案 0 :(得分:1)

我认为您认为的模块不需要拥有自己构建的服务层,只能转发到另一个服务(如Doctrine entitymanager或其他服务),而应该只通过配置其他模块提供所需的服务。 DI并封装所需的类(如模型,映射器,过滤器......)。

在我的公司中,为此目的总是有一个“应用程序”模块(就像它在ZF2的早期教程中一样)。我不知道这是否仍然是最佳做法,但在维护和结构方面有一些重要的好处。

您应该考虑在“消费”模块中定义module dependency(例如Client-API或Admin-UI)。

同样值得看一下Doctrine库和DoctrineModule实现,以了解模块应该提供什么以及仅提供库的意义。