14

TransactionScope クラスに興味がありました。

ほとんどの場合、データベース接続を目的としていると思います (これは私が使用したものです)。

私の質問は、TransactionScope の using-block に任意のコードを入れてトランザクション対応にすることはできますか? MS のドキュメントはこれについて明確ではありません。

データベース接続以外のコードをトランザクション対応にするために使用できる場合、どのコードがサポートされていますか? System.IO.File 操作をトランザクション化できるとしたら、私にはおかしなことに思えます。

4

2 に答える 2

6

いいえ、 内で任意のコードを実行することによって、任意のコードをトランザクション対応にすることはできませんTransactionScope

コメントで指摘したように、System.Transactions名前空間は、リソースをトランザクション化するのに役立つインフラストラクチャ クラスを提供します。デフォルトでは、.NET は、リンクした名前空間の紹介 (コメント内) にリストされている、いくつかの種類の操作に対するリソース マネージャー サポートを提供します:「SQL Server、ADO.NET、MSMQ、および Microsoft Distributed Transaction Coordinator (MSDTC)」。

ファイル システムトランザクションのサポートがあることがわかりました。ただし、私のお金では、そのコードはファサードを真剣に使用する可能性があります。;) おそらく、他にもっと一般化された実装が存在するでしょう (あるいはそうでないかもしれません - ファイル IO をトランザクション対応にするためには、NTFS が提供する追加のインフラストラクチャが必要になるかもしれません)。

ソフトウェア トランザクショナル メモリと呼ばれる、メモリ内の状態をトランザクショナルに変更する方法についても、かなりの量の研究が進行中です。Microsoft DevLabs では、STM.NETという実装を提供しています。

于 2010-02-16T14:09:15.780 に答える