Verwenden von MicroORM für den Lese-Layer in CQRS

cqrs dapper massive

Frage

Folks, ich überlege mir, eine microORM wie Dapper.net für die Lesezugriffskomponente einer CQRS-Anwendung (Asp.Net MVC) zu verwenden, wobei Entity Framework für die Manipulation der Domäne verwendet wird.

Dies ist CQRS-Licht, ich verwende keine Event-Sourcing usw. Ich habe es mehrmals erwähnt, dass das Read-Only-Modell in CQRS Light / Simpleas möglich sein sollte Abfrage der Datenschicht, möglich mit etwas wie ADO.net Das impliziert möglicherweise hardcoding SQL Abfragezeichenfolgen in unserem Code oder in einer XML-Datei. Wie soll ich diesen Ansatz rechtfertigen, bei dem wir die Domänenzuordnungen auf einer Seite und SQL-Anweisungen auf einer anderen Seite beibehalten müssen?

Hat jemand auf dieser Weise MicroORMs in einer CQRS-Lösung verwendet? Danke Mick

Akzeptierte Antwort

Ja, absolut können Sie Dapper, PetaPoco, Massive, Simple.Data oder jedes andere Micro-ORM verwenden, das Sie möchten. In der Vergangenheit haben wir NHibernate verwendet, um das Problem zu lösen, aber es war ein 10.000 lbs. Gorilla im Vergleich zu dem, was wir brauchten.

Eine Sache, die wir an Simple.Data und Petapoco bei der Auswertung dieser Bibliotheken wirklich gemocht haben, war, dass sie Ihre Abfragen an verschiedene Datenbank-Engines (einschließlich Mongo) mit minimalen Anpassungen anpassen konnten, während Dapper im Grunde ein großer Haufen von SQL-Strings war. -es wurde "stringly typed" geschrieben. Versteh mich nicht falsch, Dapper ist großartig und ist sehr, sehr schnell und wird absolut großartig funktionieren. Bewerten Sie einfach Ihre funktionalen und nicht-funktionalen Anforderungen, bevor Sie sich verpflichten.

Hier ist die relative Anzahl von Downloads, die NuGet für jedes der primären Mikro-ORMs verwenden (ab etwa 1.1.2012). Für uns ist es immer ein Muss, eine gute Community mit vielen Downloads zu haben, um Probleme zu beheben, wenn sie auftreten:

  • 5568 Einfache.Daten
  • 4990 Petapoco
  • 4913 Dapper
  • 2203 Massive
  • 1152 OrmLite

Schließlich, eine Sache, die Sie untersuchen möchten, ist Ihre Argumentation hinter SQL insgesamt für Ihre gelesenen Modelle. Wenn Ihre Domain Ereignisse (unabhängig von der Ereignisbeschaffung) veröffentlicht und Sie in einfache, flache / nicht-relationale Ansichtsmodelle schreiben, können Sie möglicherweise etwas so Einfaches wie JSON-Dateien durchgehen, die an den Browser gesendet werden Der Browser interpretiert und verwendet dann Ihre HTML-Vorlagen. Es gibt alle Arten von Optionen, die verfügbar sind. Sie müssen nur bestimmen, was in Ihrem Szenario am besten funktioniert.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum