Xendor ist ein .NET -Kern -Framework, das verwendet werden kann, um ein einfaches und sauberes Design zu erstellen, indem einzelne Verantwortung und Trennung von Bedenken durchgesetzt werden. Die fortgeschrittenen Funktionen sind ideal für Domain Driven Design (DDD), Befehlsabfrage Responsibilty Segragation (CQRS) und Event Sourcing. Xendor hat auch Rabbitmq -Integrationen.
Die Verantwortung der Befehlsquerität ist ein Muster, das uns aufweist, Operationen zu trennen, die Daten von denen mutieren, die es abfragen. Es wird von CQS aus der Befehlsabfrage -Trennung (CQS) abgeleitet, dass es in einer Klasse nur zwei Arten von Methoden geben kann: diejenigen, die den Zustand mutieren und void zurückgeben, und diejenigen, die den Zustand zurückgeben, aber nicht ändern.
CQRS ist ein Muster, auf das Sie anwenden? Die Innenseiten? Ihr Service/Ihre Anwendung und Sie können ihn nur auf den Teil Ihres Dienstes beantragen.
Verwenden Sie anstatt nur den aktuellen Status der Daten in einer Domäne zu speichern, um die vollständige Reihe von Aktionen, die auf diesen Daten ergriffen wurden, aufzuzeichnen. Der Laden fungiert als Aufzeichnungssystem und kann verwendet werden, um die Domänenobjekte zu materialisieren. Dies kann die Aufgaben in komplexen Domänen vereinfachen, indem die Notwendigkeit vermieden wird, das Datenmodell und die Geschäftsdomäne zu synchronisieren und gleichzeitig die Leistung, Skalierbarkeit und Reaktionsfähigkeit zu verbessern. Es kann auch Konsistenz für Transaktionsdaten bieten und vollständige Prüfungsspuren und Geschichte beibehalten, die kompensierende Aktionen ermöglichen können.
Die Projektion ist ein wichtiges Konzept beim Aufbau von ereignisorientierten Systemen. Gleichzeitig ist es extrem einfach.
Bei der Projektion geht es darum, den aktuellen Zustand aus dem Ereignisstrom abzuleiten.
Betrachten Sie beispielsweise eine Situation, in der ein Ereignisstrom von einem Server an alle Abonnenten veröffentlicht wird. Diese Ereignisse beziehen sich auf Benutzerregistrierungen und sehen aus wie:
UserAddedToAccount
{
"userId" : 55 ,
"username" : " alemol " ,
"name" : " Alejandro " ,
"lastName" : " Moline "
}UserVerifiedMail
{
"userId" : 55 ,
"email" : " [email protected] "
}UserUpdated
{
"userId" : 55 ,
"lastName" : " Molines "
}Wir können einen Abonnenten an Stream dieser Ereignisse anhängen, um diesen Stream in ein persistierendes Lesemodell zu projizieren, das zur Bereitstellung von Benutzerdetails in einer Web -Benutzeroberfläche verwendet wird. Das endgültige Lesemodell könnte aussehen:
{
"userId" : 55 ,
"username" : " alemol " ,
"email" : " [email protected] " ,
"name" : " Alejandro " ,
"lastName" : " Molines "
}Wenn Sie dieses Projekt mögen oder verwenden, geben Sie ihm bitte einen Stern. Danke!
Fühlen Sie sich frei, ein Problem auf Github zu erstellen. Beiträge, Zuganfragen sind mehr als willkommen!
Xendor ist Copyright © 2019 Alejandro Molines und andere Mitwirkende im Rahmen der MIT -Lizenz.