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