我正在通过实现来创建资源管理器IEnlistmentNotification
。我正在尝试创建一个耐用的 RM,这给我带来了一些问题。
每个事务应该有一个
IEnlistmentNotification
对象还是应该由一个IEnlistmentNotification
对象处理所有事务?我认为每个事务都需要它自己的,因此它可以为每个事务执行准备/提交/回滚。
恢复文件如何处理?
我的假设是事务中发生的一切都将在准备期间写入恢复文件。
如何区分每笔交易的信息?我认为每个事务都有一个单独的文件,或者单个文件对于每个恢复操作都有某种事务 id。
当恢复发生时,是否
Transaction.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier
与崩溃前一样?那么,这些 ID 之一能否用于在恢复期间识别事务。恢复如何发生?
如果我在其中
TransactionScope
使用了我的资源管理器,并且系统在范围中间崩溃(拔出插头或其他),那么当系统启动备份时如何进行恢复?我假设一些正在运行代码的进程在它的范围内知道系统崩溃或什么?在这种情况下,设置了哪些系统/程序/服务来实际处理恢复?