Transaktionaler Datenmodulexperte

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Menü Datei

Datei >Neu > Weitere...

Verwenden Sie den Experten Neues transaktionalen Datenmodul zum Erstellen eines Servermoduls, das unter MTS oder COM+ ausführbar ist.

Hinweis: Zum Hinzufügen eines transaktionalen Datenmoduls müssen Sie zuvor in Ihr Projekt eine ActiveX-Bibliothek von der Seite AktiveX einfügen.

Element Beschreibung

Name der CoClass

Geben Sie den Namen des Objekts ein, das implementiert werden soll. Der Experte erzeugt ein Interface mit diesem Namen und einem vorangestellten "I" sowie eine Implementierungsklasse mit diesem Namen und einem vorangestellten "T".

Beschreibung

Geben Sie eine optionale Beschreibung des Datenmoduls ein, das Sie erstellen.

Threading-Modell

Wählen Sie hier das Threading-Modell aus, um festzulegen, wie MTS oder COM+ die Aufrufe des Interface des transaktionalen Moduls serialisiert. Das gewählte Threading-Modell bestimmt, wie das Modul registriert wird. Sie müssen sicherstellen, dass die Modulimplementierung dem gewählten Modell entspricht. Die Werte für das Threading-Modell werden weiter unten beschrieben.

Transaktionsmodell

Legt das Transaktionsattribut fest, das Ihrem Modul bei der Registrierung zugewiesen wird. Die möglichen Werte werden weiter unten beschrieben.



Das Kombinationsfeld Threading-Modell kann die folgenden Werte enthalten:

Modell Beschreibung

Einfach

Der Quelltext verfügt über keine Thread-Unterstützung. Es kann immer nur ein Client-Thread behandelt werden.

Apartment

Unter COM+ greift auf jedes von einem Client instantiierte Modul immer nur ein Thread zu. Sie müssen Schutzmaßnahmen implementieren, die verhindern, dass mehrere Threads auf den globalen Speicher zugreifen. Module können aber sicher auf ihre eigenen Instanzdaten (Eigenschaften und Member) zugreifen. Unter MTS verwenden alle Client-Aufrufe den Thread, in dem das Modul erstellt wurde.

Beides

Wie Apartment, mit der Ausnahme, dass Callbacks an Clients auch serialisiert werden.

Neutral

Mehrere Clients können das Modul gleichzeitig in verschiedenen Threads aufrufen, aber COM stellt sicher, dass die Aufrufe nicht miteinander in Konflikt geraten. Sie müssen Thread-Konflikte verhindern, die globale Daten und Instanzdaten betreffen, auf die von mehreren Methoden zugegriffen wird. Dieses Modell sollte nicht bei Modulen mit Benutzeroberflächen verwendet werden. Das Modell steht nur unter COM+ zur Verfügung. Es wird unter COM auf das Apartment-Modell abgebildet.



Das Kombinationsfeld Transaktionsmodell kann die folgenden Werte enthalten:

Wert Bedeutung

Transaktion erforderlich

Das Modul muss in einer Transaktion ausgeführt werden. Wenn ein neues Modul erstellt wird, erbt sein Modulkontext die Transaktion vom Kontext des Clients. Verfügt der Client über keinen Transaktionskontext, wird automatisch ein neuer erzeugt.

Neue Transaktion erforderlich

Das Modul muss in einer eigenen Transaktion ausgeführt werden. Beim Erstellen eines neuen Moduls wird automatisch auch ein neuer Transaktionskontext erstellt. Dies erfolgt unabhängig davon, ob der Client über eine Transaktion verfügt. Das Modul kann niemals in der Transaktion seines Clients ausgeführt werden. Stattdessen werden vom System stets unabhängige Transaktionen für die neuen Objekte erstellt.

Unterstützt Transaktionen

Das Modul kann in den Transaktionen seines Clients ausgeführt werden. Wenn ein neues Modul erstellt wird, erbt sein Modulkontext die Transaktion vom Kontext des Clients, falls vorhanden. Ansonsten wird das Modul nicht in einer Transaktion erstellt.

Unterstützt keine Transaktionen

Unter MTS verhält sich diese Einstellung wie Ignoriert Transaktionen unter COM+ (siehe weiter unten). Unter COM+ kann das Modul nicht im Kontext einer Transaktion ausgeführt werden. Wenn der Client über eine Transaktion verfügt, schlagen Versuche, das Modul zu erstellen, fehl.

Ignoriert Transaktionen

Das Modul wird nicht in einer Transaktion ausgeführt. Beim Erstellen eines neuen Moduls wird sein Modulkontext ohne Transaktion erzeugt. Dabei spielt es keine Rolle, ob sein Client eine Transaktion besitzt. Dieses Modell wird unter MTS nicht unterstützt.

Siehe auch