Freigeben über


Suchen von Partitionen während der Aktivierung

Die Suche nach der richtigen Partition, in der eine Komponente aktiviert werden soll, hängt von folgenden Faktoren ab:

  • Der Funktionsaufruf und die Parameter, die im aufrufenden Programm zum Aktivieren der Komponente verwendet werden
  • Gibt an, ob die komponente, die aktiviert wird, 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 Komponentenaktivierung ausgewählt wird. Die ausgeführte Aktion hängt davon ab, wie das aufrufende Programm das Objekt instanziiert, 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 Reihenfolge der Rangfolge ausführen kann, um eine Partition zu suchen.

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 selben Prozess hinzugefügt wurde.

Die in der vorherigen Tabelle aufgeführten COM+-Aktionen werden in den folgenden Abschnitten erläutert.

Verwendung von Partitionsmonikern

Eine Partition kann explizit innerhalb eines Funktionsaufrufs ausgewählt werden, indem ein Partitionsmoniker verwendet wird. Ein Partitionsmoniker wird im Code verwendet, um die Partition der aktivierten Komponente explizit anzugeben. Wenn zum Suchen der Partition ein Partitionsmoniker verwendet wird, erfolgt die Aktivierung von dieser Partition aus. Das heißt, die im Moniker enthaltene Partitions-ID hat Vorrang vor der Standardpartition des Benutzers oder vor einer Partitions-ID, die im Kontext des Aufrufers vorhanden ist.

In 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 von Visual Basic, 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 mithilfe der CLSID der Komponente zu aktivieren, verwendet COM+ die standardmäßige Zuordnung der Benutzeridentität, 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 Funktion CoCreateInstance aufruft , um ein Objekt zu instanziieren, wird die Partitions-ID dem Kontext hinzugefügt. Die Verwendung der Partitions-ID aus dem Kontext zum Suchen der Partition ist wichtig, da dadurch sichergestellt wird, dass die Partitions-ID nach dem Starten einer Kette von Aktivierungen unverändert bleibt, es sei denn, sie wird explizit durch einen Partitionsmoniker geändert.

Weitere Informationen zum Suchen von Partitionen während der Aktivierung finden Sie unter COM+-Warteschlangenkomponenten und Partitionen.

Lokale und Remoteaktivierung

  • Wenn die aufgerufene Komponente auf einem anderen Computer vorhanden ist, werden die Partitionseigenschaften (einschließlich der Partitions-ID) auf den anderen Computer gemarst, und die Komponente wird von der ge marshallten Partition aktiviert. Wenn keine Partitions-ID gemarst wurde, verwendet COM+ den Standardpartitionssatz, der der Benutzeridentität in Active Directory zugeordnet ist.

Partitionscache

In einer Domänenumgebung verwendet COM+ die Zuordnungen in Active Directory, um die richtige Partition für die Komponentenaktivierung zu finden. Häufige Suchvorgänge 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 Nachschlagevorgängen von Benutzer-zu-Partitionssatz-Zuordnungen in Active Directory ergibt.

Der Partitionscache enthält die Zuordnungen, die in Active Directory zwischen Benutzeridentitäten oder Organisationseinheiten und deren Partitionsgruppen 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, überprüft es den Partitionscache lokal, um die Zuordnung des Benutzers zu suchen, anstatt Active Directory remote zu überprüfen.

Wenn bei der Suche im Partitionscache ein Fehler auftritt, ü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 Benutzer-zu-Partitionszuordnung durchgeführt wird, findet COM+ sie im Partitionscache.

Die folgende Abbildung zeigt den Prozess, den COM+ verwendet, um eine Partition für die Komponentenaktivierung zu suchen.

Diagramm: Struktur zur Problembehandlung für den Prozess, den COM+ zum Suchen einer Partition für die Komponentenaktivierung verwendet.

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 wird, enthält der Partitionscache möglicherweise eine veraltete Zuordnung von Benutzern zu Partitionen. Dies kann zu einem Aktivierungsfehler führen, wenn die Zuordnung von Benutzer zu Partition der Mechanismus ist, der zum Aktivieren einer Komponente verwendet wird.

Suchen einer Komponente für die Aktivierung