Suchen von Partitionen während der Aktivierung
Die Suche nach der richtigen Partition, in der eine Komponente aktiviert werden soll, hängt von Folgenden ab:
- Der Funktionsaufruf und die Parameter, die im aufrufenden Programm zum Aktivieren der Komponente verwendet werden
- Gibt an, ob die aktivierte Komponente lokal oder remote ist.
- Die interne Verwendung des Partitionscaches
Das aufrufende Programm
COM+ wählt die Partition für die Komponentenaktivierung basierend darauf aus, wie das aufrufende Programm die Komponente aktiviert.
Es gibt drei verschiedene Aktionen, die COM+ ausführen kann, wenn eine Partition für die Aktivierung von Komponenten ausgewählt wird. Die ausgeführte Aktion hängt davon ab, wie das aufrufende Programm das Objekt instanziiert, d. h. ob der Funktionsaufruf einen Partitionsmoniker enthält, der aus einer Partitions-ID und einer CLSID besteht oder nur eine CLSID enthält.
Die folgende Tabelle zeigt die verschiedenen Aktionen, die COM+ in der Rangfolge ausführen kann, um eine Partition zu finden.
| Funktionsaufruf | Parameter | COM+-Aktion |
|---|---|---|
| CoGetObject oder GetObject |
Partitionsmoniker (einschließlich Partitions-ID und CLSID) |
Verwendet die im Partitionsmoniker angegebene Partitions-ID. |
| Cocreateinstance |
CLSID |
Verwendet entweder die Partitions-ID der Standardpartition der Benutzeridentität oder die Partitions-ID, die dem Kontext während einer vorherigen Komponentenaktivierung im gleichen Prozess hinzugefügt wurde. |
Die in der obigen Tabelle aufgeführten COM+-Aktionen werden in den folgenden Abschnitten erläutert.
Verwenden von Partitionsmonikern
Eine Partition kann explizit innerhalb eines Funktionsaufrufs mithilfe eines Partitionmonikers ausgewählt werden. Ein Partitionsmoniker wird im Code verwendet, um die Partition der aktivierten Komponente explizit anzugeben. Wenn ein Partitionsmoniker verwendet wird, um die Partition zu finden, erfolgt die Aktivierung über diese Partition. Das heißt, die im Moniker enthaltene Partitions-ID hat Vorrang vor der Standardpartition des Benutzers oder einer Partitions-ID, die im Kontext des Aufrufers vorhanden ist.
Im C++-Code lautet die Syntax für die Verwendung eines Partitionsmonikers wie folgt:
HRESULT CoGetObject(
L"partition:partitionGUID/new:clsid",
pBindOptions,
IID_IUnknown,
(void**)&pIUnknown);
Das folgende Beispiel zeigt einen Codeausschnitt aus C++-Code, in dem ein Partitionsmoniker als Argument für die CoGetObject-Funktion verwendet wird:
// Create CLSID1 configured in the Production partition.
HRESULT hr = CoGetObject(
L"partition:{35056070-D5B7-4b59-9FBF-0D23417F6937}/new:CLSID1",
pBindOptions, IID_IUnknown, (void**)&pIUnknown);
In Visual Basic Code lautet die Syntax für einen Partitionsmoniker wie folgt:
GetObject("partition:partitionGUID/new:CLSID") As Object
Das folgende Beispiel zeigt einen Codeausschnitt aus Visual Basic Code, in dem ein Partitionsmoniker als Argument für die GetObject-Funktion verwendet wird:
Dim objCLSID1 As Object
Set objCLSID1 = GetObject( _
"partition:{35056070-D5B7-4b59-9FBF-0D23417F6937}/new:CLSID1")
Verwendung der Standardzuordnung
Wenn die CoCreateInstance-Funktion verwendet wird, um eine Komponente zu aktivieren, verwendet COM+ mithilfe der CLSID der Komponente die Standardmäßige Benutzeridentitätszuordnung, d. h. den Partitionssatz, dem der Benutzer in Active Directory zugeordnet ist. Wenn der Benutzer jedoch keinem Partitionssatz in Active Directory zugeordnet ist, wird die globale Partition ausgewählt.
Verwendung von Partitions-IDs und Objektkontext
Eine der fünf Eigenschaften, die einer neuen Partition zugewiesen sind, ist die Partitions-ID. Wenn das Clientprogramm die CoCreateInstance-Funktion aufruft, um ein Objekt zu instanziieren, wird die Partitions-ID dem Kontext hinzugefügt. Die Verwendung der Partitions-ID aus dem Kontext zum Auffinden der Partition ist wichtig, da dadurch sichergestellt wird, dass die Partitions-ID nach Beginn einer Aktivierungskette unverändert bleibt, es sei denn, sie wird explizit über einen Partitionsmoniker geändert.
Weitere Informationen zum Suchen von Partitionen während der Aktivierung finden Sie unter COM+ Queued Components and Partitions.
Lokale aktivierung und Remoteaktivierung
- Wenn die aufgerufene Komponente auf einem anderen Computer vorhanden ist, werden die Partitionseigenschaften (einschließlich der Partitions-ID) auf den anderen Computer gemarshallt, und die Komponente wird von der gemarshallten Partition aktiviert. Wenn keine Partitions-ID gemarshallt wurde, verwendet COM+ den Standardpartitionssatz, der der Benutzeridentität in Active Directory zugeordnet ist.
Der Partitionscache
In einer Domänenumgebung verwendet COM+ die Zuordnungen in Active Directory, um die richtige Partition für die Komponentenaktivierung zu finden. Häufige Suchungen in Active Directory können jedoch zu übermäßigem Netzwerkdatenverkehr führen. Com+ verwendet einen Partitionscache, um den Netzwerkdatenverkehr zu minimieren, der sich aus häufigen Nachschlagen der Zuordnung zwischen Benutzern und Partitionen in Active Directory ergibt.
Der Partitionscache enthält die Zuordnungen, die in Active Directory zwischen Benutzeridentitäten oder Organisationseinheiten und ihren Partitionssätzen vorgenommen wurden. Dieser Partitionscache befindet sich auf dem Anwendungsserver, auf dem sich die COM+-Anwendungen befinden.
Wenn COM+ die Standardpartition eines Benutzers bestimmen oder die Zugriffsrechte eines Benutzers auf eine Partition überprüfen muss, wird der Partitionscache lokal überprüft, um die Zuordnung des Benutzers zu suchen, anstatt Active Directory remote zu überprüfen.
Wenn die Suche im Partitionscache fehlschlägt, überprüft COM+ dann Active Directory. Wenn die Suche in Active Directory erfolgreich ist, speichert COM+ diese Zuordnung im Partitionscache. Wenn das nächste Mal eine Suche für diese Zuordnung zwischen Benutzer und Partition durchgeführt wird, wird sie von COM+ im Partitionscache gefunden.
Die folgende Abbildung zeigt den Prozess, den COM+ verwendet, um eine Partition für die Komponentenaktivierung zu suchen.

Die Größe des Caches und die Ablaufzeit für die Cacheeinträge werden über Registrierungsschlüssel festgelegt. Informationen zum Konfigurieren dieser Registrierungsschlüssel finden Sie unter Erstellen und Konfigurieren von COM+-Partitionen.
Hinweis
Wenn ein Servercomputer vom Netzwerk getrennt ist und die Zuordnung von Benutzer zu Partition geändert wird, während der Server getrennt ist, enthält der Partitionscache möglicherweise veraltete Zuordnungen zwischen Benutzern und Partitionen. Dies kann zu einem Aktivierungsfehler führen, wenn die Zuordnung zwischen Benutzer und Partition der Mechanismus ist, der zum Aktivieren einer Komponente verwendet wird.