Gerenciando transações automáticas no COM+

No modelo de programação COM+, você pode projetar seus componentes para fazer o que eles fazem melhor — habilitar a lógica de negócios ou estabelecer uma conexão de banco de dados — e contar com a estrutura de processamento de transações do Microsoft Windows para automatizar transações.

Iniciando uma transação

COM+ inicia automaticamente uma transação quando encontra uma das seguintes condições:

  • Quando um cliente não transacional chama um componente que requer uma transação ou requer uma nova transação.
  • Quando um cliente transacional chama um componente que requer uma nova transação.

Se COM+ determinar que um objeto deve ter uma nova transação, ele começará a transação primeiro e, em seguida, colocará o objeto nele. O processo inclui as seguintes etapas:

  1. COM+ cria um objeto de contexto, define os atributos de ativação JIT e Sincronização como Required e define os sinalizadores consistente e done como True e False, respectivamente.
  2. COM+ se comunica com o Coordenador de Transações Distribuídas (DTC) para iniciar uma transação. O DTC coordena a transação física.
  3. O DTC gera um identificador de transação e o passa de volta para COM+. O identificador de transação estabelece um limite de transação. Todos os objetos que participam da transação compartilham o mesmo identificador.
  4. Quando o cliente cria o objeto, COM+ o ativa dentro do limite da transação.

Finalizando uma transação

COM+ termina uma transação automática confirmando-a ou anulando-a quando uma das seguintes condições ocorre:

  • O objeto raiz da transação conclui seu trabalho e o COM+ o libera. Depois que o objeto raiz é desativado, a transação tenta confirmar.
  • O cliente libera o objeto raiz. Sem uma referência, o objeto raiz é desativado e a transação tenta confirmar.
  • A transação excede seu limite de tempo limite. A transação é cancelada automaticamente se não for confirmada dentro do período de tempo limite da transação, desativando todos os objetos associados à transação. O período de tempo limite da transação padrão é de 60 segundos.

Sinalizadores consistentes e concluídos

Acelerando transações notificando o objeto raiz

Encerrando uma transação automática chamando SetComplete