Partager via


Contextes COM+

Pour les composants configurés s’exécutant dans des applications COM+, contextes constituent la base des services COM+ fournis. Dans COM+, un contexte est défini comme un ensemble de propriétés d’exécution associées à un ou plusieurs objets COM utilisés pour fournir des services pour ces objets.

Dans COM+, chaque objet COM est associé à un contexte précis au fur et à mesure qu’il s’exécute (c’est-à-dire entre son activation et sa désactivation), et chaque contexte réside dans un seul appartement COM. Plusieurs objets peuvent s’exécuter dans le même contexte, et plusieurs contextes peuvent résider dans le même appartement. Initialisées lorsqu’un objet est activé, les propriétés de contexte, telles que les propriétés de contexte de sécurité, représentent les besoins d’exécution d’un objet.

Note

Pour les composants non configurés qui n’utilisent pas de services COM+, le contexte est, pour la plupart, ignoré.

 

COM+ utilise des propriétés de contexte comme base pour fournir des services d’exécution. Ces propriétés contiennent l’état qui détermine la façon dont l’environnement d’exécution effectue des services pour les objets dans le contexte. Dans certains cas, vous pouvez interagir directement avec les propriétés de contexte d’un objet pour indiquer un état pertinent pour un service fourni pour l’objet. Par exemple, vous devez le faire lorsqu’un objet participant à une transaction automatique vote sur le résultat de la transaction.

Pour une discussion détaillée sur la base com de ces concepts, consultez Processus, Threads et Appartements.

Interaction programmatique avec les propriétés de contexte

Chaque contexte a un ObjectContext associé objet qui effectue le suivi de ses propriétés. Vous pouvez accéder à ObjectContext en appelant la fonctionGetObjectContext. Une fois que vous avez accédé à ObjectContext, vous pouvez appeler des méthodes sur l’interface IObjectContext qu’elle expose pour manipuler des propriétés de contexte.

Par exemple, l’appel IObjectContext ::SetComplete a pour effet de définir le bit de cohérence des transactions sur « cohérent » et l’activation JIT effectuée sur « terminé » sur le contexte associé à l’objet. « Cohérent » signale à COM+ que vous votez pour valider la transaction, et « terminé » indique que votre objet est prêt à être désactivé lorsque la méthode retourne.

Outre IObjectContext, d’autres interfaces spécialisées fournissant l’accès aux propriétés de contexte sont IObjectContextInfo, IContextStateet IObjectContextActivity. Dans une certaine mesure, ISecurityCallContext accède également aux propriétés de contexte. Vous pouvez utiliser IGetSecurityCallContext ::GetSecurityCallContext pour obtenir ISecurityCallContext .

Présentation de l’activation et de l’interception

En règle générale, vous devez réfléchir au contexte uniquement dans la mesure où elle représente un certain nombre de propriétés, dont vous pouvez définir ou obtenir, qui sont utilisées pour fournir des services COM+ pour vos composants. Toutefois, dans certaines circonstances, vous devrez peut-être prendre en compte les deux facettes connexes suivantes de contextes plus en détail :

Relation avec les wrappers de contexte MTS

Les contextes remplacent efficacement les wrappers de contexte MTS. L’objectif qu’ils ont servi, en fournissant des services automatiques en interceptant les demandes de création, est désormais une fonctionnalité intégrée de COM+. Par conséquent, vous n’avez plus besoin d’utiliser la fonction SafeRef. Dans MTS, SafeRef a été utilisé pour obtenir une référence à votre objet qui peut être passée en dehors de son wrapper de contexte. Dans COM+, cela n’est pas nécessaire ; les références d’objet normales (ce pointeurs) fonctionnent.