Я создаю менеджер ресурсов, внедряя IEnlistmentNotification
.Я пытаюсь создать надежный RM, который вызвал у меня несколько вопросов.
Должен ли быть объект IEnlistmentNotification
на транзакцию или один IEnlistmentNotification
дескриптор объектаВсе транзакции?
Я бы подумал, что каждая транзакция будет хотеть своей собственной, чтобы она могла подготовить / зафиксировать / откатить для каждой транзакции.
Как обрабатывается файл восстановления?
Я предполагаю, что все, что происходит в транзакции, будет записано в файл восстановления во время Prepare.
Как можно разделить информацию для каждой транзакции?Я бы подумал, что каждая транзакция будет иметь отдельный файл или что отдельный файл будет иметь некоторый идентификатор транзакции для каждой операции восстановления.
Когда происходит восстановление, значение Transaction.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier
такое же, как и раньшеавария?Итак, можно ли использовать один из этих идентификаторов для идентификации транзакции во время восстановления.
Как происходит восстановление?
Если у меня есть TransactionScope
с моим менеджером ресурсов, который используется внутри него, и система падает (штепсель извлечен или что-то еще) в середине области действия, как происходит восстановление при запуске системырезервное копирование?Я предполагаю, что какой-то процесс, который выполнял код, имеющий область действия, знает о сбоях системы или что-то в этом роде?В таком случае, какие системы / программы / службы настроены для фактического восстановления?