Я ищу для реализации базы данных, как транзакции на С#. Я обрабатываю несколько файлов XML. Любой конкретный файл XML может вызывать дочерний XML файл во время обработки. Процессор начнет обработку дочернего XML файла. Если условия инициализации терпят неудачу или возникает исключение, я хочу возобновить обработку родительского XML файла. Именно по этой причине я ищу транзакцию, такую как реализация, чтобы я мог откатиться. Можно ли достичь? Может ли кто-нибудь предоставить мне фрагмент кода или псевдокод?
FYI - Я использую .NET Compact Framework.
В компактной структуре я думаю, что вы собираетесь перевернуть свой собственный менеджер транзакций.
В полной структуре вы могли бы, вероятно, построить что-то, используя TransactionScope и IEnlistmentNotification. Вам пришлось бы выполнить небольшую работу, чтобы все ваши действия были транзакционными, поскольку поддержка трансакций в xml отсутствует.
Может быть, вы можете попробовать использовать subversion. Существуют библиотеки для управления им с С#. Поэтому, чтобы начать транзакцию, вы только начинаете работать и откатываете назад, вы делаете откат. Согласование вашего дерева svn завершает транзакцию.
Я не знаю, слишком ли это подход. Это может быть так, но то, что вы описали, требует только некоторых свойств транзакции. В частности, вы указали, что вам нужна атомарность (т.е. Возможность отката изменений в несколько файлов одновременно). Прочность подразумевается, но фиксация получает это.
Вы не упоминали о каких-либо ограничениях последовательности, кроме условий инициализации и исключений, но, предположительно, ваш код мог бы справиться с ними и принудительно откат, если какое-либо правило будет нарушено.
Изоляция либо жесткая, либо легкая. Все зависит от того, нужно ли вам одновременно поддерживать более одной транзакции. Требуется ли одновременное обновление? Если нет, просто создайте что-то для обеспечения последовательного доступа к системе, и вы закончите. Если вам нужны параллельные обновления, я боюсь, что у меня нет идей: -)
Без развертывания собственного компонента управления транзакциями это будет сложно реализовать.
Не можете ли вы проверить/проверить весь XML файл перед тем, как позволить вашему приложению перейти на фазу обработки?