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


Best ZF2 Architecture for Api-Admin-Client application

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

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

客户端的 API 是 restual,但目前只是推送到 Redis 作业队列中,并通过 cron 进行处理。这样,客户端就无需等待插入其数据并立即返回其请求。

用于管理员的 API 目前不是 restful 的,实际上仅在应用程序内部使用。我认为这没关系,因为我不想有一个页面前端或 API 消耗前端。我宁愿服务器立即返回数据。

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

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

我认为您想到的模块不需要具有自己的构建服务层,该服务层仅转发到另一个服务(如Doctrine实体管理器或其他服务),而是应该仅通过配置DI为其他模块提供所需的服务并封装所需的类(如模型,映射器,过滤器等)。

在我的公司中,为此目的

,总是有一个"应用程序"模块(就像在ZF2的早期教程中一样)。我不知道这是否仍然是最佳实践,但是在维护和结构方面有一些严重的好处。

应考虑在"使用"模块(如客户端 API 或管理员 UI)中定义模块依赖项。

还值得一看 Doctrine 库和 DoctrineModule 实现,以了解模块应该提供什么以及只提供库在哪里有意义。