を実装してリソースマネージャーを作成していますIEnlistmentNotification。私は耐久性のある RM を作成しようとしていますが、いくつかの質問がありました。
IEnlistmentNotificationトランザクションごとにオブジェクトが必要ですか、それとも単一のIEnlistmentNotificationオブジェクトですべてのトランザクションを処理する必要がありますか?各トランザクションはそれ自体が必要になると思うので、トランザクションごとに準備/コミット/ロールバックを実行できます。
リカバリ ファイルはどのように処理されますか?
私の想定では、トランザクションで発生するすべてのものが、準備中に回復ファイルに書き込まれるということです。
各トランザクションの情報をどのように分離できますか? 各トランザクションには個別のファイルがあるか、単一のファイルに回復操作ごとに何らかのトランザクション ID があると思います。
リカバリが発生している場合
Transaction.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier、クラッシュ前と同じですか? したがって、これらの ID の 1 つを使用して、リカバリー中にトランザクションを識別することができます。回復はどのように起こりますか?
内部でリソース マネージャを使用している場合
TransactionScope、スコープの途中でシステムがクラッシュ (プラグが抜かれるなど) した場合、システムがバックアップを開始したときにどのように回復しますか? スコープを持つコードを実行していたプロセスが、システムのクラッシュなどについて知っていると思いますか? その場合、実際にリカバリを処理するためにどのシステム/プログラム/サービスがセットアップされていますか?