Concepts de Resource Manager de compensation COM+

Vous pouvez utiliser com+ Compensation Resource Manager (CRM) pour facilement et rapidement intégrer des ressources d’application aux transactions de Microsoft Distributed Transaction Coordinator (DTC). Vos ressources d’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 défaillances, et le CRM récupère ce fichier journal lorsque l’application redémarre.

Un CRM se compose des deux composants suivants :

  • Worker CRM. Ce composant effectue le travail principal 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 via laquelle le Worker CRM peut écrire des enregistrements dans un fichier journal durable sur le disque. Le Worker CRM doit écrire des enregistrements dans le journal et les rendre durables avant d’effectuer son travail afin que, si un incident se produit, la récupération peut se produire correctement. Le Worker CRM nécessite toujours une transaction.
  • Crm Compensateur. Ce composant est créé par l’infrastructure CRM à l’achèvement de la transaction. Il implémente une interface définie par laquelle l’infrastructure CRM peut transmettre des notifications d’achèvement des transactions et les enregistrements de journal qui ont été précédemment écrits par le Worker CRM.

Un CRM COM+ fournit une atomicité avec des notifications transactionnelles et une 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 ou par des applications externes, soit sérialisé lors d’une transaction.

Une fois que la transaction a passé la phase de préparation, les travailleurs crm et répercutants crm peuvent être exécutés simultanément. Il est possible que le composant Worker CRM d’une nouvelle transaction devienne actif alors que le CRM Compensation d’une transaction précédente traite toujours la transaction précédente.

Pendant les é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 doit 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 de 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 le crm Compensation.
  • Les ICrmCompensator et ICrmCompensatorVariants sont implémentés sur le serveur de compensation CRM. Ces interfaces sont utilisées pour fournir des notifications de résultat des transactions et leurs enregistrements de journal associés à la compensation CRM. Normalement, l’agent de compensation CRM implémente l’une de ces interfaces, selon qu’elle nécessite des enregistrements de journal non structurés ou structurés. Les enregistrements de journal structurés sont ceux qui sont générés en tant que collection de Variants et sont généralement 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 compensation CRM peut implémenter les deux interfaces compensatoires; toutefois, une seule à la fois est utilisée pour fournir des enregistrements de journal.
  • Les interfaces de supervision COM+ CRM sont utilisées pour surveiller les CRMs au sein d’une application serveur particulière. Pour plus d’informations sur les interfaces de supervision, consultez LES interfaces de supervision COM+ CRM.

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

Tâches de compensation COM+ Resource Manager