C# 持久资源管理器(IEnlistmentNotification)恢复

C# 持久资源管理器(IEnlistmentNotification)恢复,c#,.net,resourcemanager,C#,.net,Resourcemanager,我正在通过实现IEnlistmentNotification创建一个资源管理器。我正在尝试创建一个持久的RM,这给我带来了一些问题 每个事务应该有一个IEnlistmentNotification对象,还是应该有一个IEnlistmentNotification对象处理所有事务 我认为每个事务都需要自己的事务,这样它就可以为每个事务执行准备/提交/回滚 如何处理恢复文件 我的假设是,事务中发生的一切都将在准备过程中写入恢复文件 如何区分每笔交易的信息?我认为每个事务将有一个单独的文件,或者单个文

我正在通过实现
IEnlistmentNotification
创建一个资源管理器。我正在尝试创建一个持久的RM,这给我带来了一些问题

  • 每个事务应该有一个
    IEnlistmentNotification
    对象,还是应该有一个
    IEnlistmentNotification
    对象处理所有事务

    我认为每个事务都需要自己的事务,这样它就可以为每个事务执行准备/提交/回滚

  • 如何处理恢复文件

    我的假设是,事务中发生的一切都将在准备过程中写入恢复文件

    如何区分每笔交易的信息?我认为每个事务将有一个单独的文件,或者单个文件将为每个恢复操作提供某种类型的事务id

    发生恢复时,
    事务.Current.TransactionInformation.DistributedIdentifier/LocalIdentifier
    是否与崩溃前相同?因此,在恢复过程中可以使用其中一个ID来标识事务

  • 复苏是如何发生的

    <如果我有一个<代码>事务范围< /代码>,里面有我的资源管理器,系统在中间的崩溃(插头被拉或是什么),当系统重新启动时,恢复是如何发生的?我假设某个运行代码的进程知道系统崩溃之类的事情?在这种情况下,设置了哪些系统/程序/服务来实际处理恢复


  • 我相信我在网上找到了我所有的答案

  • 是的,每个事务都应该有自己的IEnlistmentNotification
  • 是的,您可以使用“Transaction.TransactionInformation.DistributeIdentifier/LocalIdentifier”来跟踪恢复文件中的事务
  • 运行代码的应用程序将检查是否需要恢复,并重新登记拔出插头时未完成的事务