Мне было любопытно на предмет класса TransactionScope.
По большей части я предполагаю, что это было предназначено для соединений с базой данных (который является тем, что я использовал его для).
Мой вопрос, банка, Вы помещаете какой-либо код в блок использования TransactionScope для создания этого транзакционным? Документация MS не является четкой на этом.
Если это может использоваться для создания кода кроме соединений с базой данных транзакционным, которые поддерживаются? Казалось бы сумасшедшим мне, если это могло бы сделать Систему. Транзакционные операции IO.File.
TransactionScope не только для баз данных. Каждый компонент, реализующий интерфейс IEnlistmentNotification, может участвовать в двухфазной фиксации области транзакции.
Вот пример хранения транзакций в памяти: http://www.codeproject.com/KB/dotnet/Transactional_Repository.aspx
Кроме того, я не уверен, что В .NET есть компоненты для ввода-вывода транзакционных файлов, но реализовать такой компонент довольно просто - последние ОС, такие как Vista и Windows Server 2008, поддерживают ввод-вывод файлов транзакций.
Нет, вы не можете сделать произвольный код транзакционным, запустив его внутри TransactionScope
.
Как вы отметили в комментарии, пространство имен System.Transactions
предоставляет классы инфраструктуры, которые помогают сделать любой ресурс транзакционным . По умолчанию .NET предоставляет поддержку диспетчера ресурсов для нескольких видов операций, перечисленных во введении к пространству имен, которое вы связали (в комментарии): «SQL Server, ADO.NET, MSMQ и координатор распределенных транзакций Microsoft (MSDTC)».
Оказывается, существует поддержка транзакций файловой системы - хотя я смог найти ее только для NTFS ( Расширьте свои приложения с помощью транзакций файловой системы ). Однако за мои деньги этот код мог серьезно использовать фасад. ;) Возможно, существуют другие, более обобщенные реализации (или, возможно, нет - создание транзакционного ввода-вывода файлов может потребовать дополнительной инфраструктуры, предоставляемой NTFS).
Также ведется изрядное количество исследований по внесению изменений в транзакционную память в оперативной памяти, называемую программной транзакционной памятью . Microsoft DevLabs предлагает реализацию: STM.NET .