web-dev-qa-db-fra.com

Mise en place d'une infrastructure d'approvisionnement d'événements

J'implémente le modèle Event Sourcing et CQRS dans mon application. Je me suis inspiré de CQRS journey où j'ai téléchargé un exemple de code. Là, j’ai trouvé l’ensemble de l’infrastructure nécessaire à la recherche d’événements (CommandHandlers, EventHandlers, Events, Envelopes, etc.), mais c’est une très grosse quantité de code et je n’imagine pas que j’ai besoin de tout le code pour mon simple sourcing d’événements.

Connaissez-vous une bibliothèque/un paquet/projet testé commun contenant toutes les infrastructures pour l’envoi/l’enregistrement de commandes, d’événements et tout ce dont j’ai besoin dans le modèle d’approvisionnement en événements? Ou devrais-je le mettre en œuvre moi-même? 

10
Jozef Cechovsky

La recommandation générale est de ne pas écrire votre propre magasin d’événements. Bien sûr, vous pouvez écrire votre propre ES, mais faites-le uniquement à des fins éducatives. Pour les systèmes de production, je vous recommanderais d’utiliser un ES existant. Cela peut sembler beaucoup de code d’infrastructure inutile au début, mais vous remarquerez bientôt que vous en avez besoin. Dans sa forme la plus simple, ES n'est pas si difficile, mais une fois que vous aurez commencé à gérer la concurrence, les performances, etc., ce sera plus compliqué. 

NEventStore et Event Store sont deux magasins d’événements bien connus. 

En passant, d'après ma propre expérience, ne sous-estimez pas le temps qu'il vous faudra pour investir dans le code d'infrastructure, même si vous utilisez un SE existant.

6
user707727

Puis-je vous présenter ce cadre d’approvisionnement en événements basé sur .NET Core 2.x: https://github.com/jacqueskang/EventSourcing/

Il fournit des classes de base pour la mise en œuvre d'événements, des entités générées par des événements, des référentiels d'entités et plusieurs magasins d'événements simples pour la persistance d'événements dans un fichier texte ou dans une base de données (à l'aide d'EF Core).

Il est particulièrement facile d'être intégré à une application Web ASP.NET Core. J'ai une démonstration assez simple ici

Bienvenue toute contribution ou commentaires!

2
Jacques Kang

Greg young a créé un projet CQRS/ES très simple que vous pouvez utiliser comme point de départ. L'infrastructure est beaucoup plus simple que le code de trajet CQRS

https://github.com/gregoryyoung/m-r

1
user4979882

Récemment, j'ai ouvert la source de mon implémentation Java d'un framework de source d'événements (base de données), Eventsourcing for Java . Cependant, il est prévu d’avoir plusieurs implémentations linguistiques, y compris .NET. C'est pourquoi des efforts sont en cours pour spécifier les principes fondamentaux .

Mon implémentation est davantage centrée sur la capture fidèle de commande/événement avec une "côté de lecture" paresseux plutôt que sur une application proactive de chaque événement.

0

J'ai mis en place mon propre magasin d’événements - solution de messagerie basé sur CQRS Journey. La persistance du message est au-dessus de SQL Server. Avec lui, vous pouvez faire beaucoup plus: - Vous pouvez vous abonner à tout moment à un flux. Très utile lorsque vous avez besoin d'un nouveau ViewModel pour la lecture. Cela vous permettra d’obtenir une haute disponibilité du côté de la lecture. - Vous pouvez distribuer votre application sur plusieurs nœuds à la manière d’un micro service. - Vous pouvez interroger votre magasin d’événements, comme le magasin d’événements de Greg Young. - Et bien d’autres encore ...

0
Narvalex