Conceitos do COM+ Compensating Resource Manager

Você pode usar o CRM (Compensating Resource Manager) COM+ para integrar fácil e rapidamente recursos de aplicativos com transações do Microsoft Distributed Transaction Coordinator (DTC). Os recursos do aplicativo podem votar no resultado de uma transação e receber a notificação final de seu resultado. Um log durável é gerado para que os recursos do aplicativo possam gravar registros que sobrevivem a falhas, e o CRM recupera esse arquivo de log quando o aplicativo é reiniciado.

Um CRM consiste nos dois componentes a seguir:

  • Trabalhador de CRM. Esse componente executa o trabalho principal do CRM específico e implementa uma interface específica para a tarefa que ele precisa executar. A infraestrutura do CRM fornece uma interface para o CRM Worker por meio da qual o CRM Worker pode gravar registros em um arquivo de log durável no disco. O CRM Worker deve gravar registros no log e torná-los duráveis antes de executar seu trabalho para que, se ocorrer uma falha, a recuperação possa ocorrer corretamente. O CRM Worker sempre requer uma transação.
  • Compensador de CRM. Esse componente é criado pela infraestrutura do CRM na conclusão da transação. Ele implementa uma interface definida pela qual a infraestrutura do CRM pode transmitir notificações de conclusão de transações e os registros de log que foram gravados anteriormente pelo CRM Worker.

Um CRM COM+ fornece atomicidade com notificações transacionais e durabilidade com o log do CRM, mas não fornece isolamento de recursos. Em um ambiente multithread, é responsabilidade do desenvolvedor do CRM garantir que o acesso aos recursos, seja por vários trabalhadores do CRM ou aplicativos externos, seja serializado durante uma transação.

Depois que a transação passar pela fase de preparação, o CRM Compensator e o CRM Workers poderão ser executados simultaneamente. É possível que o componente CRM Worker de uma nova transação se torne ativo enquanto o CRM Compensator de uma transação anterior ainda estiver processando a transação anterior.

Durante falhas antes da recuperação do aplicativo de servidor CRM, uma transação interrompida deve ser considerada ativa e não concluída. Não deve ser possível que processos externos acessem os recursos que estavam sendo alterados por essa transação específica antes da recuperação do processo do servidor CRM.

O CRM define três tipos de interface para as funções básicas do CRM:

  • ICrmLogControl é implementado no atendente do CRM e é usado pelo CRM Worker para gravar registros de log no log. Ele também pode ser usado pelo CRM Compensator.
  • ICrmCompensator e ICrmCompensatorVariants são implementados no CRM Compensator. Essas interfaces são usadas para entregar notificações de resultados de transações e seus registros de log associados ao CRM Compensator. Normalmente, o CRM Compensator implementaria apenas uma dessas interfaces, dependendo se exigia registros de log não estruturados ou estruturados. Registros de log estruturados são aqueles que são criados como uma coleção de variantes e são normalmente para uso pelo Microsoft Visual Basic. Registros de log não estruturados são apenas um buffer de bytes e normalmente são para uso pelo Microsoft Visual C++. Um CRM Compensator pode implementar ambas as interfaces do compensador; no entanto, apenas um de cada vez é usado para entregar registros de log.
  • As interfaces de monitoramento do CRM COM+ são usadas para monitorar os CRMs dentro de um aplicativo de servidor específico. Para obter informações detalhadas sobre as interfaces de monitoramento, consulte Interfaces de monitoramento do CRM COM+.

Os tópicos a seguir nesta seção fornecem mais detalhes sobre o serviço CRM COM+:

COM+ Compensando tarefas do Gerenciador de Recursos