这将是我第一次在生产中使用Elastic。

对于数据库,我使用存储库模式,例如IOrderRepository的具体类,IFacetRepository使用SQL和Mongo驱动程序与db通信。

该应用程序将要从Elastic获得所有产品,而我使用Elastic REST Api来获取数据。

在代码库中表示 flex 提供程序(?)的最佳实践是什么?

我可以继续使用存储库模式,并创建使用ProductRepositoryElasticClient并进行http调用,但是我觉得这不是一个完美的解决方案。

我也无法创建ProductService,因为我不想在代码中进行任何交易。
唯一的责任就是从 flex 中获得产品,仅此而已。

可能mediator pattern是正确的实现方式。

你有什么建议?

最佳答案

我会使用内部使用ProductRepositoryElasticClient:

  • Repository是数据库的接口(interface),它的客户端不需要知道其实现是否与Relational DB,MongoDB或Elasticsearch对话。这正是您创建ProductRepository类所要实现的。
  • 如果将来您从Elasticsearch移至另一个数据库(例如DynamoDB),则只需更改ProductRepository,而它的客户端将不在乎。

  • 警惕调解人模式,因为随着时间的流逝,您最终可能会遇到上帝的对象。

    07-27 13:43