COM+-Synchronisierungskonzepte
Im Allgemeinen ist keine Synchronisierung erforderlich, wenn Sie über ein Singlethread-Apartment (STA) verfügen, da das Apartment die Synchronisierung für Sie bereitstellt. Die Synchronisierung wird wichtig, wenn Sie über ein Multithread-Apartment (MTA) und ein Freethread-Objekt verfügen. In der Vergangenheit mussten Freethreadobjekte sperren. Sie können die Verwendung von Sperren vermeiden, indem Sie das Synchronisierungsattribut für eine Komponente festlegen.
Die Synchronisierung verfügt über die folgenden Eigenschaften:
- Ermöglicht es einem Aufrufer, die Komponente gleichzeitig einzugeben.
- Verhindert den Prozess- oder computerübergreifenden Fluss.
- Fließt von Komponente zu Komponente innerhalb eines Prozesses.
- Ermöglicht die Wiedereinleitung desselben Aufrufers.
Im Gegensatz zu Apartments umfassen Aktivitäten Kontexte aus mehreren Prozessen und Hosts. Die Synchronisierung bestimmt, welche Aktivität ein -Objekt enthält. Objekte können sich in einer der folgenden Aktivitäten befinden:
- Aktivität des Erstellers
- Neue Aktivität
- Keine Aktivität
COM+ stellt die Parallelität durch eine Reihe von Sperren für jede Aktivität sicher. Wenn ein Aufrufer versucht, eine mit COM+ synchronisierte Komponente einzugeben, die bereits von einem anderen Aufrufer verwendet wird, wird der Anruf blockiert, bis die Sperre aufgehoben wird. Dieses Blockierungsverhalten führt zu keinem Timeout und kann nicht für ein Timeout konfiguriert werden. Wenn die Sperre nicht verwendet wird, wird die Sperre abgerufen, und der Aufruf wird verarbeitet. Nach Abschluss des Vorgangs wird die Sperre für den nächsten Aufrufer aufgehoben. Um Deadlocks zu verhindern, verwaltet COM+ den Zugriff auf alle Objekte über Aktivitäten hinweg durch eine geschachtelte Reihe von Aufrufen, die über das Netzwerk verkettet sind.
COM+ stellt die folgenden Synchronisierungseinstellungen bereit:
- Disabled
- Nicht unterstützt
- Unterstützt
- Erforderlich
- Requires New
Hinweis
Einige Synchronisierungseinstellungen funktionieren in Verbindung mit anderen COM+-Komponenteneinstellungen. Beispielsweise ist eine Synchronisierung erforderlich, wenn der JIT-Aktivierungsdienst (JUST-in-Time) für COM+ aktiviert ist. JIT ist erforderlich, wenn Sie Transaktionen aktivieren. Daher ist für die COM+- Transaktionsverarbeitung auch eine Synchronisierung erforderlich. Daher müssen Klassen mit der Einstellung JIT=True auch die Einstellung "Synchronization=Required" oder "Synchronization=RequiresNew" aufweisen.
Anweisungen zum Festlegen von Synchronisierungsoptionen mithilfe des Komponentendienste-Verwaltungstools finden Sie unter Festlegen des Synchronisierungsattributs.
Weitere Informationen zur Verwendung der COM+-Verwaltungsbibliothek zum Festlegen von Synchronisierungsoptionen finden Sie unter Automatisieren der COM+-Verwaltung.
Zugehörige Themen