Partager via


Gestion des transactions automatiques dans COM+

Dans le modèle de programmation COM+, vous pouvez concevoir vos composants pour faire ce qu’ils font le mieux (activation de la logique métier ou établissement d’une connexion de base de données) et vous appuyer sur l’infrastructure de traitement des transactions de Microsoft Windows pour automatiser les transactions.

Démarrage d'une transaction

COM+ démarre automatiquement une transaction lorsqu’elle rencontre l’une des conditions suivantes :

  • Lorsqu’un client non transactionnel appelle un composant qui nécessite une transaction ou une nouvelle transaction.
  • Quand un client transactionnel appelle un composant qui nécessite une nouvelle transaction.

Si COM+ détermine qu’un objet doit avoir une nouvelle transaction, il commence d’abord la transaction, puis y place l’objet. Le processus comporte les étapes suivantes :

  1. COM+ crée un objet de contexte, définit les attributs Activation JIT et Synchronisation sur Obligatoire, et définit les indicateurs cohérents et terminés sur True et False, respectivement.
  2. COM+ communique avec le coordinateur de transactions distribuées (DTC) pour commencer une transaction. Le DTC coordonne la transaction physique.
  3. Le DTC génère un identificateur de transaction et le transmet à COM+. L’identificateur de transaction établit une limite de transaction. Tous les objets participant à la transaction partagent le même identificateur.
  4. Lorsque le client crée l’objet, COM+ l’active à l’intérieur de la limite de transaction.

Fin d’une transaction

COM+ met fin à une transaction automatique en la commitant ou en l’abandonnant lorsque l’une des conditions suivantes se produit :

  • L’objet racine de la transaction termine son travail et COM+ le libère. Une fois l’objet racine désactivé, la transaction tente de valider.
  • Le client libère l’objet racine. Sans référence, l’objet racine se désactive et la transaction tente de valider.
  • La transaction dépasse son seuil de délai d’attente. La transaction s’interrompt automatiquement si elle n’est pas validée dans le délai d’expiration de la transaction, désactivant tous les objets associés à la transaction. Le délai d’expiration de la transaction par défaut est de 60 secondes.

Indicateurs cohérents et terminés

Accélération des transactions en notifiant l’objet racine

Arrêt d’une transaction automatique en appelant SetComplete