Транзакции с XML-файлами - PullRequest
2 голосов
/ 19 июня 2009

Я ищу для реализации базы данных, как транзакции в C #. Я обрабатываю несколько файлов XML. Любой конкретный XML-файл может вызывать дочерний XML-файл во время обработки. Процессор начнет обработку дочернего XML-файла. Если условия инициализации не выполняются или есть исключение, я хочу возобновить обработку родительского файла XML. Это причина, по которой я ищу транзакцию, подобную реализации, чтобы я мог откатиться назад. Возможно ли достичь? Может ли кто-нибудь предоставить мне фрагмент кода или псевдокод?

К вашему сведению - я использую .NET Compact Framework.

Ответы [ 3 ]

2 голосов
/ 19 июня 2009

На компактной платформе я думаю, что вы собираетесь запустить свой собственный менеджер транзакций.

В полной структуре вы, вероятно, могли бы что-то построить, используя TransactionScope и IEnlistmentNotification. Вам бы пришлось проделать немалую работу, чтобы все ваши действия были доступны для транзакций, поскольку в xml нет встроенной поддержки трансляций.

0 голосов
/ 20 июня 2009

Может быть, вы могли бы попробовать использовать Subversion. Есть библиотеки для управления им из C #. Итак, чтобы начать транзакцию, вы просто начинаете работать, а для отката вы делаете откат. Передача вашего SVN-дерева завершает вашу транзакцию.

Я не знаю, слишком ли это простой подход. Вполне может быть, но то, что вы описали, требует только некоторых свойств транзакции. В частности, вы указали, что вам нужна атомарность (то есть возможность отката изменений в нескольких файлах одновременно). Долговечность подразумевается, но вы получаете это за коммит.

Вы не упомянули никаких ограничений согласованности, за исключением того, что существуют условия и исключения инициализации, но, вероятно, ваш код может справиться с ними и вызвать откат в случае нарушения какого-либо правила.

Изоляция бывает трудной или легкой. Все зависит от того, нужно ли вам поддерживать более одной транзакции одновременно. Требуется ли разрешение одновременных обновлений? Если нет, просто создайте что-то для обеспечения последовательного доступа к системе, и все готово. Если вам нужны одновременные обновления, боюсь, у меня нет идей: -)

0 голосов
/ 19 июня 2009

Без использования собственного компонента управления транзакциями это будет трудно реализовать.

Разве вы не можете проверить / проверить весь XML-файл, прежде чем разрешить приложению приступить к обработке?

...