Написание Resource Manager
Если вы пишете службу или компонент и требуется использовать службы транзакций или требуется отслеживать состояние транзакции ядра, необходимо создать диспетчер ресурсов (RM).
Чтобы написать диспетчер ресурсов, необходимо создать несколько объектов ядра. Объекты, которые использует RM:
- Объекты диспетчера транзакций (TM)
- объекты Resource Manager
- Объекты зачисления
Сначала создайте объект TM. Существует два типа TM:
- Переменная — эти виртуальные машины не имеют журнала и не могут восстановить свое состояние.
- Устойчивый — эти виртуальные машины имеют журнал
Чтобы создать устойчивый TM, необходимо либо создать журнал CLFS и вызвать CreateTransactionManager , либо заставить KTM создать его. После создания устойчивой ТМ необходимо сначала восстановить TM, вызвав RecoverTransactionManager. После восстановления TM она становится доступной для использования.
Если вы восстановили существующую TM, все RM, связанные с этой TM, начнут получать сообщения о восстановлении. Дополнительные сведения см. в разделе Обработка восстановления.
Затем создайте диспетчер ресурсов, вызвав CreateResourceManager с дескриптором TM. RM может быть переменным или устойчивым. С устойчивыми модулями RM можно использовать только устойчивые TM.
При работе в транзакциях вы заверяете в транзакцию, вызывая CreateEnlistmentи указывая, какие уведомления следует получать.
Примечание Вы можете начать получать уведомления до завершения вызова CreateEnlistment .
При получении уведомления вызовите соответствующую функцию "Complete*" после завершения любой работы, связанной с обработкой уведомления. Полные функции:
Если в какой-то момент диспетчер ресурсов не может завершить работу транзакции или если продолжение приведет к тому, что приложение не может отменить работу, выполненную в рамках транзакции, необходимо выполнить откат транзакции, вызвав Метод RollbackEnlistment.