Escrevendo um Resource Manager
Se você estiver escrevendo um serviço ou componente e precisar usar serviços transacionais ou se precisar monitorar o estado de uma transação de kernel, precisará criar um RM (gerenciador de recursos).
Para escrever um gerenciador de recursos, você deve criar vários objetos kernel. Os objetos que um RM usa são:
- Objetos TM (Transaction Manager)
- objetos Resource Manager
- Objetos de inscrição
Primeiro, crie um objeto TM. Há dois tipos de TMs:
- Volátil – essas TMs não têm um log e não podem recuperar seu estado
- Durável – essas TMs têm um log
Para criar um TM durável, você deve criar um log CLFS e chamar CreateTransactionManager ou fazer com que o KTM o crie para você. Depois que um TM durável for criado, primeiro você deverá recuperar o TM chamando RecoverTransactionManager. Depois que o TM for recuperado, ele estará disponível para uso.
Se você recuperou um TM existente, todas as RMs associadas a esse TM começarão a receber mensagens de recuperação. Para obter mais informações, consulte Processamento de recuperação.
Em seguida, crie um gerenciador de recursos chamando CreateResourceManager com o identificador TM. A RM pode ser volátil ou durável. Somente TMs duráveis podem ser usados com RMs duráveis.
Ao trabalhar transacionalmente, você se inscreve na transação chamando CreateEnlistmente especificando quais notificações receber.
Nota Você pode começar a receber notificações antes que a chamada para CreateEnlistment seja concluída.
Quando você receber uma notificação, chame a função "Complete*" apropriada quando qualquer trabalho associado ao processamento da notificação for concluído. As funções completas são:
Se a qualquer momento um gerenciador de recursos não conseguir concluir o trabalho da transação ou se continuar renderizar seu aplicativo não puder desfazer o trabalho feito dentro da transação, você deverá reverter a transação chamando RollbackEnlistment.