Frage

Gibt es eine gute C ++ Framework verteilte XA-Transaktionen zu implementieren?

Mit dem Begriff „gut“ Ich meine verwendbar, einfach (bedeuten nicht „easy“), gut strukturiert.

Aufgrund Gründe zu untersuchen, in dem Moment, als ich mit einer persönlichen Umsetzung fortfahren werde, nach X / Open XA-Spezifikation.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Ich bin mir nicht bewusst, ein Open-Source oder freien Transaktionsmonitor, das jede Reifegrad hat, obwohl Dieser Link hat einige Fan-out haben. Die etabliert kommerziell diejenigen sind BEA Tuxedo, Tibco Enterprise Message Service- (wirklich ein transaktionale Message Queue-Manager wie IBM MQ) und Transarc der Encina (jetzt im Besitz von IBM). Diese Systeme sind alle sehr teuer.

Wenn Sie Ihren eigenen machen wollen (und nebenbei ein bisschen einen Namen für sich selbst durch eine Lücke in der Open-Source-Software Füllraum) erhalten eine Kopie von Gray und Reuter . Dies ist die definitive Arbeit an Transaktionsverarbeitungssystemen Architektur, die von zwei der führenden Experten auf dem Gebiet geschrieben.

Interessanterweise behaupten sie, dass man einen Arbeits TP-Monitor in rund 10.000 Zeilen C. Diese Umsetzung kann klingt eigentlich recht vernünftig, wie das, was sie tut, ist nicht so komplex. Gelegentlich versucht, ich habe zu versuchen.

Im Wesentlichen müssen Sie einen Koordinator für verteilte Transaktionen machen, die als Daemon-Prozess läuft. Sie müssen das Ressourcen-Manager-Protokoll arbeitet von ihm zu bekommen, also mit diesem Start als ein Prototyp wahrscheinlich ein guter Anfang ist. Wenn Sie es unabhängig erhalten ein Rollback oder eine solche Transaktion Sie die Basis der TM-RM-Schnittstelle verfügen.

Der XA-API wie in der Spezifikation definiert ist die API, um den Transaktionsmanager zu steuern. Streng genommen, Sie brauchen kein 3-Tier-Architektur zu machen verteilte Transaktionen dieser Art zu verwenden, aber sie sind mehr oder weniger sinnlos ohne TP-Monitor. Wie Sie von dem Front-End zur mittleren Ebene kommunizieren kann für den Leser als Übung überlassen. Sie sind wahrscheinlich am besten aus einem vorhandenen ORB verwenden, von denen zur Verfügung mehrere guten Open-Source-Implementierungen geben.

Je nachdem, ob Sie den DTC und die App-Server getrennte Prozesse machen (was für Stabilität möglicherweise wünschenswert, aber nicht unbedingt erforderlich) Sie auch ACE als Grundlage für den DTC-Server verwenden können.

Wenn Sie eine High-Performance-Middle-Tier-Server machen Besuche Douglas Schmidt ACE Rahmen . Dieses kommt mit einem ORB namens TAO, und ist flexibel genug, um Ihnen zu erlauben, mehr oder weniger jede Threading-Modell zu verwenden, die Sie Lust haben. Mit diesem ist ein Trade-off zwischen ihm das Lernen und den Aufwand der eigenen Schreiben und Debuggen alle Synchronisations- und concurrancy Fragen.

Andere Tipps

Vielleicht recht spät für Ihre Aufgabe, aber es kann für andere Benutzer nützlich sein: lixa ist kein „Rahmen“, aber es stellt eine Implementierung für die Spezifikation Transaktionsdemarkation TX und die meisten der XA-Funktionen unterstützt. Die TX-Spezifikation ist für C und COBOL Sprachen, aber die Integration der C-Version in einem C ++ Projekt sollte mühelos sein.

Andere Option ist Open-Source- Enduro / X verteilte Transaktionsverarbeitung Rahmen , die einfach zu schreiben erlaubt C / C ++ Dienstleistungen, die mit Ressourcenmanager arbeiten kann (zB Datenbanken) und gibt Fähigkeit zu begehen oder Arbeiten von mehreren verschiedenen ausführbaren Dateien auf demselben / verschiedenen physischen Servern arbeitete mit verschiedenen Ressourcen / Datenbanken getan zunichte machen.

Intern XA 2PC wird es.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top