2009-03-08 4 views
1

Ich verwende eine Remote-Speicherlösung von Drittanbietern, die keine Transaktionen unterstützt.Die besten Optionen für die Implementierung eines eigenen Transaktionsanbieters

Ich möchte meine eigene Pseudo-ACIDity in .NET für diese Lösung implementieren, indem einfach versucht, nicht-fehlerhafte Entity Einfügungen/Update zu überschreiben/löschen, um zu einem Alt-Daten-aber-guten-Daten-Zustand zu gelangen, wenn andere Einfügungen/Aktualisierungen schlagen in einem Transaktionskontext fehl.

Ist es vorteilhaft oder einfacher, mit System.Transactions Namespace irgendwie zu integrieren (jemand haben Horror oder Erfolgsgeschichten zu diesem Thema? Ist es mit der allgemeinen Idee von dem, was ich versuche zu tun?) Oder sollte ich meine eigenen Transaction-Klassen erstellen und Schnittstellen?

Edit: Ich fand Implementing a Resource Manager auf MSDN für die Integration mit System.Transactions, ist dies der Weg zu gehen? Oder sollte ich nur ein benutzerdefiniertes Modell für dieses Muster modellieren?

Edit: Reading Hibernate docs, das ist genau das Muster, das ich wirklich will. Sollte ich nur NHibernate herunterladen und den gesamten SQL-Code ausschneiden oder seine Basisklassen und Schnittstellen verwenden und meinen eigenen CRUD-Code implementieren oder ist er sehr SQL-abhängig? Ich habe festgestellt, dass ich einige meiner Methoden bereits fast neu geschrieben habe, um der Dokumentation zu entsprechen.

Antwort

1

;-) Ich habe gerade diesen Link hinzugefügt, als ich Ihre Bearbeitung sah.

Ich würde wahrscheinlich zuerst diese Option erkunden. Wenn ein erweiterbares Framework verfügbar ist, sollten Sie zögern, selbst eines zu erstellen.

1

Sie sollten einen Ressourcenmanager implementieren, ja. Die Unterstützung von System.Transaction ist keine Kleinigkeit. So können Ihre Entwickler beispielsweise Updates für Ihre Ressource sowie für Oracle in der gleichen Arbeitseinheit vornehmen. Sie erhalten das kostenlos, wenn Sie Ihre Bibliothek so erstellen, dass sie ein Ressourcenmanager ist.