Xendor est un framework Core .NET qui peut être utilisé pour créer une conception simple et propre en appliquant une responsabilité unique et une séparation des préoccupations. Ses fonctionnalités avancées sont idéales pour la conception pilotée par le domaine (DDD), la ségragation de la responsabilité de la requête de commande (CQRS) et l'approvisionnement en événement. Xendor a également des intégrations RabbitMQ.
La ségrégation de la responsabilité de la quête de commande est un modèle qui nous indique de séparer les opérations qui mutent les données de celles qui les interrogent. Il est dérivé de CQS de séparation des requêtes de commande (CQS) indique qu'il ne peut y avoir que deux types de méthodes sur une classe: celles qui mutent l'état et le retour vide et celles qui retournent l'état mais ne le changent pas.
CQRS est un modèle sur lequel vous vous appliquez? L'avoir? de votre service / application et vous pouvez l'appliquer uniquement à la partie de votre service.
Au lieu de stocker uniquement l'état actuel des données dans un domaine, utilisez une boutique annexe pour enregistrer la série complète d'actions prises sur ces données. Le magasin agit comme le système d'enregistrement et peut être utilisé pour matérialiser les objets de domaine. Cela peut simplifier les tâches dans des domaines complexes, en évitant la nécessité de synchroniser le modèle de données et le domaine commercial, tout en améliorant les performances, l'évolutivité et la réactivité. Il peut également fournir une cohérence pour les données transactionnelles et maintenir les sentiers d'audit complètes et l'historique qui peuvent permettre des actions de rémunération.
La projection est un concept important lors de la construction de systèmes centrés sur les événements. En même temps, c'est extrêmement simple.
La projection consiste à dériver l'état actuel du flux d'événements.
Par exemple, considérez une situation, où un flux d'événements est publié par un serveur à tous les abonnés. Ces événements sont liés aux inscriptions des utilisateurs et ressemblent à:
UserAddedToAccount
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}UserVerifiedEmail
{
"userId" : 55 ,
"email" : " [email protected] "
}Userupdated
{
"userId" : 55 ,
"lastName" : " Molines "
}Nous pouvons joindre un abonné au flux de ces événements pour projeter ce flux dans un modèle de lecture persistant, utilisé pour servir les détails des utilisateurs dans une interface utilisateur Web. Le modèle de lecture finale pourrait ressembler:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}Si vous aimez ou utilisez ce projet, veuillez lui donner une étoile. Merci!
N'hésitez pas à créer un problème sur GitHub. Les contributions, les demandes de traction sont plus que les bienvenues!
Xendor est Copyright © 2019 Alejandro Molines et autres contributeurs sous la licence du MIT.