1

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

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

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

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

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

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

4

1 回答 1

1

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

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

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

还值得看看 Doctrine 库和 DoctrineModule 实现,以了解模块应该提供什么以及仅提供库的意义所在。

于 2013-11-25T19:09:57.140 回答