处理两阶段提交事务
本主题讨论在 COM+ 中的 Microsoft 分布式事务处理协调器 (DTC) 、事务集成器 (TI) 和 CICS 处理两阶段提交 (2PC) 事务时会发生什么情况。
当客户端应用程序在包含 TI 对象的 .NET 应用程序上调用方法时,该过程将开始。 然后,.NET 从其用户线程池中为事务分配一个线程,开始该事务,并将该方法的输入参数传递给 TI 运行时环境。 在从 CICS 主机返回响应之前,事务会阻止此线程。 这是工作时间的单位,主要包括 CICS 应用程序处理事务业务逻辑并根据需要访问数据库所需的时间, (假定传输速度与 LAN 速度保持同步) 。 当方法的输出参数从主机发送回 .NET 时,提交消息将发送到 DTC。
DTC 激活事务的准备阶段,导致 TI 从其 2PC 线程池中分配线程,并一直阻止该线程,直到请求提交消息从主机到达为止。 准备好事务的所有分支后,DTC 会将提交完成消息发送到 .NET,然后将方法的输出参数和值返回给调用客户端应用程序并释放线程。
这将完成用户的事务,但事务监视 (DTC 和 CICS) 仍必须完成提交的第二阶段,同样,TI 2PC 线程池中的线程将分配给执行提交第二阶段的每个事务。