Freigeben über


COM+ kompensierende Resource Manager-Konzepte

Sie können das COM+ Compensating Resource Manager (CRM) verwenden, um Anwendungsressourcen einfach und schnell in DTC-Transaktionen (Microsoft Distributed Transaction Coordinator) zu integrieren. Ihre Anwendungsressourcen können über das Ergebnis einer Transaktion abstimmen und eine endgültige Benachrichtigung über das Ergebnis erhalten. Es wird ein dauerhaftes Protokoll generiert, damit Ihre Anwendungsressourcen Datensätze schreiben können, die Fehler überstehen, und das CRM stellt diese Protokolldatei beim Neustart der Anwendung wieder her.

Ein CRM besteht aus den folgenden zwei Komponenten:

  • CRM Worker. Diese Komponente führt die Standard Arbeit des spezifischen CRM aus und implementiert eine Schnittstelle, die speziell für die Aufgabe, die sie ausführen muss. Die CRM-Infrastruktur stellt eine Schnittstelle zum CRM Worker bereit, über die der CRM Worker Datensätze in eine dauerhafte Protokolldatei auf dem Datenträger schreiben kann. Der CRM Worker muss Datensätze in das Protokoll schreiben und dauerhaft machen, bevor er seine Arbeit ausführt, damit bei einem Absturz die Wiederherstellung ordnungsgemäß erfolgen kann. Der CRM Worker erfordert immer eine Transaktion.
  • CRM-Kompensator. Diese Komponente wird von der CRM-Infrastruktur nach Abschluss der Transaktion erstellt. Es implementiert eine definierte Schnittstelle, über die die CRM-Infrastruktur Benachrichtigungen über den Transaktionsabschluss und die Protokolldatensätze übergeben kann, die zuvor vom CRM Worker geschrieben wurden.

Ein COM+-CRM bietet Atomität mit Transaktionsbenachrichtigungen und Dauerhaftigkeit mit dem CRM-Protokoll, bietet jedoch keine Isolation von Ressourcen. In einer Multithreadumgebung liegt es in der Verantwortung des CRM-Entwicklers sicherzustellen, dass der Zugriff auf Ressourcen, entweder durch mehrere CRM Worker oder externe Anwendungen, während einer Transaktion serialisiert wird.

Nachdem die Transaktion die Vorbereitungsphase bestanden hat, können CRM-Kompensator und CRM-Worker gleichzeitig ausgeführt werden. Es ist möglich, dass die CRM Worker-Komponente einer neuen Transaktion aktiv wird, während der CRM-Kompensator einer vorherigen Transaktion noch die vorherige Transaktion verarbeitet.

Bei Fehlern vor der Wiederherstellung der CRM-Serveranwendung sollte eine unterbrochene Transaktion als aktiv und nicht abgeschlossen betrachtet werden. Externe Prozesse sollten nicht auf die Ressourcen zugreifen können, die von dieser transaktion vor der Wiederherstellung des CRM-Serverprozesses geändert wurden.

Das CRM definiert drei Schnittstellentypen für die grundlegenden CRM-Funktionen:

  • ICrmLogControl wird für den CRM-Sachbearbeiter implementiert und wird vom CRM Worker verwendet, um Protokolldatensätze in das Protokoll zu schreiben. Sie kann auch vom CRM-Kompensator verwendet werden.
  • ICrmCompensator und ICrmCompensatorVariants werden im CRM-Kompensator implementiert. Diese Schnittstellen werden verwendet, um Transaktionsergebnisbenachrichtigungen und die zugehörigen Protokolldatensätze an den CRM-Kompensator zu übermitteln. Normalerweise implementiert der CRM-Kompensator nur eine dieser Schnittstellen, je nachdem, ob unstrukturierte oder strukturierte Protokolldatensätze erforderlich sind. Strukturierte Protokolldatensätze sind solche, die als Sammlung von Variants aufgebaut sind und in der Regel von Microsoft Visual Basic verwendet werden. Unstrukturierte Protokolldatensätze sind nur ein Puffer von Bytes und werden in der Regel von Microsoft Visual C++ verwendet. Ein CRM-Kompensator kann beide Kompensatorschnittstellen implementieren. es wird jedoch jeweils nur eins verwendet, um Protokolldatensätze bereitzustellen.
  • Die COM+ CRM-Überwachungsschnittstellen werden für die Überwachung der CRMs innerhalb einer bestimmten Serveranwendung verwendet. Ausführliche Informationen zu den Überwachungsschnittstellen finden Sie unter COM+ CRM-Überwachungsschnittstellen.

Die folgenden Themen in diesem Abschnitt enthalten weitere Details zum COM+ CRM-Dienst:

COM+ kompensierende Resource Manager Tasks