2017-03-27 5 views
1

Ce sera la première fois que je vais utiliser Elastic en production.Meilleure pratique pour communiquer avec Elastic dans une application

Pour les bases de données, j'utilise un modèle de référentiel, par exemple des classes concrètes de IOrderRepository, IFacetRepository utilise des pilotes SQL et Mongo pour communiquer avec db.

L'application va obtenir tous les produits d'Elastic, et j'utilise Elastic REST Api pour obtenir des données.

Quelle peut être la meilleure pratique pour représenter le fournisseur élastique (?) Dans la base de code?

Je peux continuer à utiliser le modèle Repository, et créer ProductRepository qui utilise ElasticClient et faire des appels http, mais je pense que ce n'est pas une solution parfaite.

Je ne peux pas non plus créer ProductService car je ne veux pas d'affaires dans le code. Une seule responsabilité consiste à obtenir des produits élastiques, c'est tout.

Peut être mediator pattern est la bonne façon de mettre en œuvre.

Que suggérez-vous?

Répondre

1

je partirais avec un ProductRepository qui utilise ElasticClient interne:

  • A Repository est une interface à une base de données et ses clients pas besoin de savoir si les pourparlers de mise en œuvre à un Relational DB, MongoDB ou ElasticSearch. C'est exactement ce que vous obtiendriez en créant une classe ProductRepository.
  • Si, à l'avenir, vous passez d'Elasticsearch à une autre base de données, telle que DynamoDB, il vous suffit de modifier ProductRepository et ses clients ne s'en soucieront pas.

Méfiez-vous des motifs de médiateur, comme vous pouvez vous retrouver avec Dieu objets au fil du temps.