2017-03-27 17 views
1

这将是我第一次在生产中使用Elastic。在应用程序中与Elastic进行通信的最佳实践

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

应用程序将从Elastic获取所有产品,并使用Elastic REST Api获取数据。

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

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

我也不能创建ProductService,因为我不想在代码中有任何业务。 单一职责是从弹性中获得产品,就这些。

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

你有什么建议?

回答

1

我会去与使用ElasticClient内部一个ProductRepository

  • 一个Repository是一个接口,数据库和它的客户不需要知道它的实现会谈的关系数据库,MongoDB的或Elasticsearch。这正是通过创建ProductRepository类来实现的。
  • 如果您将来从Elasticsearch转移到另一个数据库(如DynamoDB),则只需更改ProductRepository,而其客户端不会在意。

警惕Mediator模式的,因为你可以用对象随着时间的推移而告终。

相关问题