在 COM+ 中管理自动事务

在 COM+ 编程模型中,你可以将组件设计为做它们最擅长的事情(启用业务逻辑或建立数据库连接),并依靠 Microsoft Windows 的事务处理框架来自动执行事务。

启动事务

当遇到以下任一情况时,COM+ 会自动启动事务:

  • 当非事务客户端调用需要事务或需要新事务的组件时。
  • 当事务性客户端调用需要新事务的组件时。

如果 COM+ 确定一个对象应该有一个新的事务,会首先开始事务,然后将该对象置于该事务中。 本流程包括以下步骤:

  1. COM+ 创建上下文对象,将 JIT 激活同步属性设置为“必需”,并将一致和完成标志分别设置为 True 和 False。
  2. COM+ 与分布式事务协调器 (DTC) 通信以开始事务。 DTC 协调实际事务。
  3. DTC 生成事务标识符,并将其传递回 COM+。 事务标识符建立事务边界。 参与事务的所有对象共享相同的标识符。
  4. 当客户端创建对象时,COM+ 会在事务边界内激活它。

结束事务

当出现以下情况之一时,COM+ 通过提交或中止自动事务来结束该事务:

  • 事务的根对象完成其工作,COM+ 将其释放。 根对象停用后,事务将尝试提交。
  • 客户端释放根对象。 如果没有引用,根对象将停用,事务会尝试提交。
  • 事务超过其超时阈值。 如果事务未在事务超时期限内提交,则事务会自动中止,从而停用与事务关联的所有对象。 默认事务超时时间为 60 秒。

一致和完成标志

通过通知根对象加快事务速度

通过调用 SetComplete 终止自动事务