Verwalten automatischer Transaktionen in COM+

Im COM+-Programmiermodell können Sie Ihre Komponenten so entwerfen, dass sie das tun, was sie am besten können – die Aktivierung der Geschäftslogik oder das Herstellen einer Datenbankverbindung – und sich auf das Transaktionsverarbeitungsframework von Microsoft Windows verlassen, um Transaktionen zu automatisieren.

Starten einer Transaktion

COM+ startet automatisch eine Transaktion, wenn eine der folgenden Bedingungen erfüllt ist:

  • Wenn ein nicht transaktionaler Client eine Komponente aufruft, die eine Transaktion erfordert oder eine neue Transaktion erfordert.
  • Wenn ein Transaktionsclient eine Komponente aufruft, die eine neue Transaktion erfordert.

Wenn COM+ feststellt, dass ein Objekt eine neue Transaktion haben soll, beginnt es zuerst mit der Transaktion und platziert dann das Objekt darin. Der Vorgang umfasst folgende Schritte:

  1. COM+ erstellt ein Kontextobjekt, legt sowohl das JIT-Aktivierungs - als auch das Synchronisierungsattribute auf Erforderlich fest und legt die konsistenten und fertigen Flags auf True bzw. False fest.
  2. COM+ kommuniziert mit dem Distributed Transaction Coordinator (DTC), um eine Transaktion zu starten. Der DTC koordiniert die physische Transaktion.
  3. Der DTC generiert einen Transaktionsbezeichner und übergibt ihn zurück an COM+. Der Transaktionsbezeichner legt eine Transaktionsgrenze fest. Alle an der Transaktion teilnehmenden Objekte verwenden denselben Bezeichner.
  4. Wenn der Client das Objekt erstellt, aktiviert COM+ es innerhalb der Transaktionsgrenze.

Abschluss einer Transaktion

COM+ beendet eine automatische Transaktion durch Commit oder Abbruch, wenn eine der folgenden Bedingungen auftritt:

  • Das Stammobjekt der Transaktion schließt seine Arbeit ab und gibt COM+ frei. Nachdem das Stammobjekt deaktiviert wurde, versucht die Transaktion, einen Commit durchzuführen.
  • Der Client gibt das Stammobjekt frei. Ohne Verweis wird das Stammobjekt deaktiviert, und die Transaktion versucht, einen Commit durchzuführen.
  • Die Transaktion überschreitet ihren Timeoutschwellenwert. Die Transaktion wird automatisch abgebrochen, wenn kein Commit innerhalb des Transaktionstimeoutzeitraums erfolgt, und alle der Transaktion zugeordneten Objekte werden deaktiviert. Der Standardmäßige Transaktionstimeoutzeitraum beträgt 60 Sekunden.

Konsistente und fertige Flags

Beschleunigen von Transaktionen durch Benachrichtigen des Stammobjekts

Beenden einer automatischen Transaktion durch Aufrufen von SetComplete