Wcf TransactionFlow(TransactionFlowOption.Mandatory)OperationBehavior(TransactionScopeRequired=true
我正试图了解WCF交易,但有一个概念让我感到困惑。交易行为的区别是什么Wcf TransactionFlow(TransactionFlowOption.Mandatory)OperationBehavior(TransactionScopeRequired=true,wcf,Wcf,我正试图了解WCF交易,但有一个概念让我感到困惑。交易行为的区别是什么 TransactionFlow(TransactionFlowOption.Mandatory) 及 据我所知,从文档中可以看出,它们是实现同一目标的两种方式,但我无法真正理解 干杯 Stephen当一个方法需要事务作用域时,WCF将创建一个事务来执行该方法的逻辑。事务流允许您链接事务,以便需要事务的多个服务方法都可以加入到单个事务中,而不是单独的事务中 考虑以下简单设置: [OperationBehavior(Tran
TransactionFlow(TransactionFlowOption.Mandatory)
及
据我所知,从文档中可以看出,它们是实现同一目标的两种方式,但我无法真正理解
干杯
Stephen当一个方法需要事务作用域时,WCF将创建一个事务来执行该方法的逻辑。事务流允许您链接事务,以便需要事务的多个服务方法都可以加入到单个事务中,而不是单独的事务中 考虑以下简单设置:
[OperationBehavior(TransactionScopeRequired = true)]
public void ServiceMethod1()
{
// Executes ServiceMethod2 and ServiceMethod3
}
[OperationBehavior(TransactionScopeRequired = true)]
[TransactionFlow(TransactionFlowOption.Mandatory)]
public void ServiceMethod2()
[OperationBehavior(TransactionScopeRequired = true)]
[TransactionFlow(TransactionFlowOption.Mandatory)]
public void ServiceMethod3()
ServiceMethod1需要一个事务,因此WCF启动一个事务,然后调用ServiceMethod2和ServiceMethod3。虽然这些服务也需要一个事务,但它们是流动的。因此,它们不是启动新事务,而是采用ServiceMethod1创建的同一事务。如果途中出现任何故障,或者saction未提交,整个链将回滚。如果事务未流动,则每个方法都将启动一个事务,该事务自行运行,对调用的其他方法没有影响。OK,因此TransactionScopeRequired=true要求操作有一个事务,但TransactionFlowOption。强制执行多个操作要在同一事务中执行的操作。TransactionFlowOption.Mandatory将从调用函数中“流动”,或在当前事务的标识符下继续(如果存在此类事务)。如果没有预先存在的事务,则此指令将导致WCF启动新事务。
[OperationBehavior(TransactionScopeRequired = true)]
public void ServiceMethod1()
{
// Executes ServiceMethod2 and ServiceMethod3
}
[OperationBehavior(TransactionScopeRequired = true)]
[TransactionFlow(TransactionFlowOption.Mandatory)]
public void ServiceMethod2()
[OperationBehavior(TransactionScopeRequired = true)]
[TransactionFlow(TransactionFlowOption.Mandatory)]
public void ServiceMethod3()