2 Stimmen

Verwaltung mehrerer Persistenzmechanismen

Ich habe eine Reihe von Geschäftsobjekten, die potenziell auf verschiedene Weise persistiert werden können, obwohl für eine bestimmte Konfiguration der Anwendung nur ein Persistenzmechanismus aktiv sein wird. Die Persistenz wird über Schnittstellen gehandhabt.

Die naheliegende Architektur scheint mir zu sein, alle Persistenzobjekte für eine Konfiguration in ein Paket und alle Objekte für eine andere Konfiguration in ein anderes Paket zu packen. Aber es scheint, dass dieser Plan mit einer Menge verschiedener Pakete und einem Problem der Paketverwaltung enden könnte. Gibt es andere gute Lösungen für dieses Problem?

2voto

Troy Howard Punkte 2590

Ich habe dies in meinem Unternehmen umgesetzt, indem ich eine wiederverwendbare Repository-Bibliothek erstellt habe.

Im Grunde habe ich eine Repository-Abstraktion mit Schnittstellen erstellt, die grundlegende CRUD-Operationen für ein übergebenes Objekt oder einen Satz von Objekten ausführt. Dann habe ich das mit verschiedenen Persistenzmechanismen implementiert. Die Bibliothek kann persistieren jedes Objekt zu XML, JSON, Binär oder SQL. Alle diese Repositories verwenden die gleichen Schnittstellen, so dass der gesamte Code, der mit einem Repository interagieren muss, die Schnittstellen und nicht die konkreten Implementierungen verwendet. Jede Implementierung befindet sich in einer eigenen Bibliothek, ebenso wie die Abstraktionen, so dass Sie nur die Abstraktionsbibliothek und die für Ihr Programm erforderliche Implementierung verteilen müssen.

Im Objektmodell muss nichts implementiert werden, da es generische Objekte mit Reflection behandelt (die Bibliothek ist in C# für .Net geschrieben).

Ich habe die Repositories auch für Erweiterungen offen gelassen, und in einigen Anwendungen werden die standardmäßigen Reflection-basierten Dinge durch stark typisierte Repositories ersetzt, die effizienter sind, aber immer noch auf den generischen Implementierungen basieren.

Ich hoffe, das hilft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X