这将是我第一次在生产中使用Elastic。
对于数据库,我使用存储库模式,例如ID | Code | Name
1 | f965a4eb IN | Bob
3 | f965a4ed IN | James
的具体类,IOrderRepository
使用SQL和Mongo驱动程序与db进行通信。
该应用程序将从Elastic获取所有产品,并使用Elastic REST Api获取数据。
在代码库中表示弹性提供程序(?)的最佳做法是什么?
我可以继续使用Repository模式,并创建使用IFacetRepository
并进行http调用的ProductRepository
,但我觉得这不是一个完美的解决方案。
我也无法创建ElasticClient
,因为我不希望代码中有任何业务。
单一的责任就是从弹性产品中获取产品。
可能mediator pattern是正确的实施方式。
你有什么建议?
答案 0 :(得分:1)
我选择内部使用ProductRepository
的{{1}}:
ElasticClient
是数据库的接口,其客户端无需知道其实现是否与Relational DB,MongoDB或Elasticsearch进行通信。这正是您通过创建Repository
类来实现的目标。ProductRepository
,其客户就不会关心。警惕Mediator模式,因为随着时间的推移你最终会得到 God 对象。