Partager via


Com+ Compensation Resource Manager Concepts

Vous pouvez utiliser le Resource Manager COM+ Compensation (CRM) pour intégrer facilement et rapidement des ressources d’application aux transactions Microsoft Distributed Transaction Coordinator (DTC). Les ressources de votre application peuvent voter sur le résultat d’une transaction et recevoir une notification finale de son résultat. Un journal durable est généré afin que vos ressources d’application puissent écrire des enregistrements qui survivent aux échecs, et le CRM récupère ce fichier journal lors du redémarrage de l’application.

Un CRM se compose des deux composants suivants :

  • CRM Worker. Ce composant effectue le main travail du CRM spécifique et implémente une interface spécifique à la tâche qu’il doit effectuer. L’infrastructure CRM fournit une interface au worker CRM par le biais de laquelle il peut écrire des enregistrements dans un fichier journal durable sur le disque. Le collaborateur CRM doit écrire des enregistrements dans le journal et les rendre durables avant d’effectuer son travail afin que, en cas d’incident, la récupération puisse se produire correctement. Le worker CRM a toujours besoin d’une transaction.
  • Compensateur CRM. Ce composant est créé par l’infrastructure CRM à la fin de la transaction. Il implémente une interface définie par laquelle l’infrastructure CRM peut transmettre des notifications d’achèvement de transaction et les enregistrements de journal qui ont été écrits précédemment par le worker CRM.

Un CRM COM+ fournit l’atomicité avec les notifications transactionnelles et la durabilité avec le journal CRM, mais ne fournit pas d’isolation des ressources. Dans un environnement multithread, il incombe au développeur CRM de s’assurer que l’accès aux ressources, soit par plusieurs workers CRM, soit par des applications externes, soit est sérialisé lors d’une transaction.

Une fois la transaction passée la phase de préparation, la compensation CRM et les workers CRM peuvent s’exécuter simultanément. Il est possible que le composant Worker CRM d’une nouvelle transaction soit actif alors que la compensation CRM d’une transaction précédente traite toujours la transaction précédente.

Lors des échecs avant la récupération de l’application serveur CRM, une transaction interrompue doit être considérée comme active et non terminée. Il ne devrait pas être possible pour les processus externes d’accéder aux ressources qui ont été modifiées par cette transaction particulière avant la récupération du processus du serveur CRM.

Le CRM définit trois types d’interface pour les fonctions CRM de base :

  • ICrmLogControl est implémenté sur le commis CRM et est utilisé par le worker CRM pour écrire des enregistrements de journal dans le journal. Il peut également être utilisé par l’compensateur CRM.
  • ICrmCompensator et ICrmCompensatorVariants sont implémentés sur le compensateur CRM. Ces interfaces sont utilisées pour fournir des notifications de résultats de transaction et les enregistrements de journal associés à l’compensateur CRM. Normalement, le compensateur CRM n’implémente qu’une seule de ces interfaces, selon qu’il nécessite des enregistrements de journal non structurés ou structurés. Les enregistrements de journal structurés sont ceux qui sont créés en tant que collection de variants et sont généralement destinés à être utilisés par Microsoft Visual Basic. Les enregistrements de journal non structurés ne sont qu’une mémoire tampon d’octets et sont généralement utilisés par Microsoft Visual C++. Un compensateur CRM peut implémenter les deux interfaces compensatoires ; toutefois, un seul à la fois est utilisé pour remettre les enregistrements de journal.
  • Les interfaces de supervision COM+ CRM sont utilisées pour surveiller les CRM au sein d’une application serveur particulière. Pour plus d’informations sur les interfaces de supervision, consultez Interfaces de supervision COM+ CRM.

Les rubriques suivantes de cette section fournissent plus de détails sur le service COM+ CRM :

Com+ compensation Resource Manager tâches