3
votes

DTO - Services multiples et DTO redondant

Nous suivons l'arche de micro-service pour notre application développée en utilisant spring-boot. Pour expliquer le problème, considérons 3 services différents A, B, C. Certaines des API du service C sont également consommées par les services A et B.

J'ai un DTO pour l'API dans le projet C (service C). Ma question est la suivante: pour les projets A et B, dois-je créer des classes DTO redondantes pour consommer les API Service C? Ou devrais-je créer un fichier jar séparé pour les DTO - afin qu'il puisse être réutilisé sur plusieurs services?

Quelle est l'approche que vous avez suivie si vous avez rencontré une situation similaire?


0 commentaires

3 Réponses :


0
votes

Je pense que cela dépend de certains cas d'utilisation particuliers.

Si le DTO est une classe courante qui est utilisée dans de nombreux modules de votre projet, il doit être contenu dans un module common .

Il existe une autre solution, je pense que vous pouvez traiter le service C comme un service API (comme l'API Google Map par exemple). Ainsi, lorsque vous fournissez un service à vos clients, vous devez fournir une bibliothèque à vos clients. Par conséquent, après avoir développé le service C , vous pouvez développer une bibliothèque de services C qui contient le DTO nécessaire à ses clients.

Pour utiliser l'API du service C, A et B doivent importer la bibliothèque de services C et appeler (new CService ()). getSomething ()


7 commentaires

J'aime beaucoup l'idée de services offrant leur propre bibliothèque cliente. Juste une question - d'où puis-je apprendre ces meilleures pratiques? ou comment avez-vous appris? Pouvez-vous me guider s'il vous plaît?


Je l'ai appris grâce à des projets pratiques. De plus, j'utilise pas mal d'API, la plupart d'entre elles nous fournissent une bibliothèque. Je pense donc que cela pourrait être une solution possible.


Désolé de vous déranger! Pouvez-vous s'il vous plaît partager quelques-unes des sources / livres / blogs / tutoriel youtube / projet pratique qui vous ont aidé? J'apprécierais tout ce que vous pourriez partager.


Vous pouvez consulter github.com/spring-petclinic . Ce site contient également de nombreuses ressources que vous pouvez apprendre baeldung.com


Je suis juste un plus frais, donc j'ai beaucoup de choses à apprendre:


agréable. pour moi tu es un senior :)


je préfère ne pas recommander les bibliothèques clientes. ils provoquent (souvent) des couplages inutiles entre les services et limitent votre technologie à celles dans lesquelles la lib est écrite.



0
votes

Créez un package common (par exemple: com.example.common) dans votre projet. Ensuite, vous créez un sous-package avec le nom dto (Par exemple: com.example.common.dto) et mettez tous les DTO qui seront couramment utilisés dans tous les services.
Cette approche doit être adoptée.


0 commentaires

0
votes

Oui, vous pouvez les mettre dans une API commons distincte et vous pouvez utiliser ce fichier jar dans vos dépendances. Cela sera utile car vous pouvez même écrire certaines interfaces (pour les services) ou certaines classes utilitaires comme le cryptage / décryptage (pour l'auth) dans ce package commons et les implémenter dans l'un de vos micro-services.


0 commentaires