Localisation des partitions pendant l’activation
La localisation de la partition correcte dans laquelle activer un composant dépend des éléments suivants :
- L’appel de fonction et les paramètres utilisés dans le programme appelant pour activer le composant
- Si le composant en cours d’activation est local ou distant
- Utilisation interne du cache de partition
Programme d’appel
COM+ sélectionne la partition pour l’activation du composant en fonction de la façon dont le programme appelant active le composant.
COM+ peut effectuer trois actions différentes lors de la sélection d’une partition pour l’activation du composant. L’action effectuée dépend de la façon dont le programme appelant instancie l’objet, c’est-à-dire si l’appel de fonction inclut un moniker de partition, qui se compose d’un ID de partition et d’un CLSID, ou si l’appel de fonction inclut uniquement un CLSID.
Le tableau suivant montre les différentes actions que COM+ peut effectuer, par ordre de priorité, pour localiser une partition.
Appel de fonction | Paramètre | Action COM+ |
---|---|---|
CoGetObject ou GetObject |
Moniker de partition (inclut l’ID de partition et le CLSID) |
Utilise l’ID de partition spécifié dans le moniker de partition. |
CoCreateInstance |
CLSID |
Utilise l’ID de partition de la partition par défaut de l’identité utilisateur ou l’ID de partition qui a été ajouté au contexte lors d’une activation de composant précédente dans le même processus. |
Les actions COM+ répertoriées dans le tableau précédent sont expliquées dans les sections suivantes.
Utilisation de monikers de partition
Une partition peut être sélectionnée explicitement dans un appel de fonction à l’aide d’un moniker de partition. Un moniker de partition est utilisé dans le code pour spécifier explicitement la partition du composant activé. Si un moniker de partition est utilisé pour localiser la partition, l’activation se produit à partir de cette partition. Autrement dit, l’ID de partition inclus dans le moniker est prioritaire sur la partition par défaut de l’utilisateur ou sur un ID de partition qui existe dans le contexte de l’appelant.
Dans le code C++, la syntaxe pour l’utilisation d’un moniker de partition est la suivante :
HRESULT CoGetObject(
L"partition:partitionGUID/new:clsid",
pBindOptions,
IID_IUnknown,
(void**)&pIUnknown);
L’exemple suivant montre un extrait de code C++, dans lequel un moniker de partition est utilisé comme argument pour la fonction CoGetObject :
// Create CLSID1 configured in the Production partition.
HRESULT hr = CoGetObject(
L"partition:{35056070-D5B7-4b59-9FBF-0D23417F6937}/new:CLSID1",
pBindOptions, IID_IUnknown, (void**)&pIUnknown);
Dans le code Visual Basic, la syntaxe d’un moniker de partition est la suivante :
GetObject("partition:partitionGUID/new:CLSID") As Object
L’exemple suivant montre un extrait de code Visual Basic, dans lequel un moniker de partition est utilisé comme argument pour la fonction GetObject :
Dim objCLSID1 As Object
Set objCLSID1 = GetObject( _
"partition:{35056070-D5B7-4b59-9FBF-0D23417F6937}/new:CLSID1")
Utilisation du mappage par défaut
Lorsque la fonction CoCreateInstance est utilisée pour activer un composant, à l’aide du CLSID du composant, COM+ utilise le mappage d’identité utilisateur par défaut, c’est-à-dire le jeu de partitions auquel l’utilisateur est mappé dans Active Directory. Toutefois, si l’utilisateur n’est pas mappé à un jeu de partitions dans Active Directory, la partition globale est sélectionnée.
Utilisation d’ID de partition et de contexte d’objet
L’UNE des cinq propriétés attribuées à une nouvelle partition est l’ID de partition. Lorsque le programme client appelle la fonction CoCreateInstance pour instancier un objet, l’ID de partition est ajouté au contexte. L’utilisation de l’ID de partition du contexte pour localiser la partition est importante, car elle garantit qu’après le début d’une chaîne d’activations, l’ID de partition reste le même, sauf s’il est modifié explicitement par le biais d’un moniker de partition.
Pour plus d’informations sur la localisation des partitions pendant l’activation, consultez Composants et partitions mis en file d’attente COM+.
Activation locale et à distance
- Si le composant appelé existe sur un autre ordinateur, les propriétés de partition (y compris l’ID de partition) sont marshalées sur l’autre ordinateur et le composant est activé à partir de la partition marshalée. Si aucun ID de partition n’a été marshalé, COM+ utilise le jeu de partitions par défaut mappé à l’identité de l’utilisateur dans Active Directory.
Cache de partition
Dans un environnement de domaine, COM+ utilise les mappages dans Active Directory pour localiser la partition appropriée pour l’activation du composant. Toutefois, les recherches fréquentes dans Active Directory peuvent entraîner un trafic réseau excessif. Pour réduire le trafic réseau résultant de recherches fréquentes de mappage utilisateur-à-partition dans Active Directory, COM+ utilise un cache de partition.
Le cache de partition contient les mappages qui ont été effectués dans Active Directory entre les identités d’utilisateur ou les unités d’organisation et leurs jeux de partitions. Ce cache de partition se trouve sur le serveur d’applications sur lequel résident les applications COM+.
Lorsque COM+ doit déterminer la partition par défaut d’un utilisateur ou valider les droits d’accès d’un utilisateur à une partition, il vérifie le cache de partition localement pour rechercher le mappage de l’utilisateur, au lieu de vérifier Active Directory à distance.
Si la recherche dans le cache de partition échoue, COM+ vérifie ensuite Active Directory. Si la recherche réussit dans Active Directory, COM+ stocke ce mappage dans le cache de partition. La prochaine fois qu’une recherche est effectuée pour ce mappage utilisateur-à-partition, COM+ le trouvera dans le cache de partition.
L’illustration suivante montre le processus utilisé par COM+ pour localiser une partition pour l’activation de composant.
La taille du cache et la durée d’expiration des entrées de cache sont définies via des clés de Registre. Pour plus d’informations sur la configuration de ces clés de Registre, consultez Création et configuration de partitions COM+.
Notes
Si un ordinateur serveur est déconnecté du réseau et que le mappage utilisateur-à-partition est modifié pendant que le serveur est déconnecté, le cache de partition peut contenir un mappage utilisateur à partition obsolète. Cela peut entraîner une erreur d’activation si le mappage utilisateur-à-partition est le mécanisme utilisé pour activer un composant.