WCF事务编程其实很简单,可以用三句话进行概括:通过服务契约决定事物流转(Transaction Flow)的策略通过绑定实施事务的流转通过服务行为控制事务的相关行为。本篇文章着重介绍如果通过TransactionFlowAttribute特性定义事务流转策略。 

契约时是一种双边协定,是双方就某个关注点达成的一种共识。对于分布式事务的实现来讲,首先需要解决的是事务流转的问题,即事务将客户端的事务流向服务端。要解决事务流转的问题,需要在事务的发送方和接收方就流转问题达成共识,即双方采用相匹配的事务发送和接收策略。毫无疑问,这样的开关需要定义在服务契约之上,同时事务是基于服务操作的,所以事务流转策略最终应用到操作契约上面。

WCF通过TransactionFlowAttribute特性将相应的事务流转策略关联到某个服务之上,具体来讲,我们在定义服务契约的时候,直接将TransactionFlowAttribute特性应用到相应的操作契约上即可。我们先来看看TransactionFlowAttribute的定义,从下面的代码我们可以看到,TransactionFlowAttribute并仅仅是一个简单的自定义特性,它更是一个操作行为。至于该操作行为对事务流转行为作了怎样的控制,会在后续的文章详细讲述。

   1: [AttributeUsage(AttributeTargets.Method)]
class TransactionFlowAttribute : Attribute, IOperationBehavior
   3: {   
//其他成员
public TransactionFlowAttribute(TransactionFlowOption transactions);
public TransactionFlowOption Transactions { get; }
   7: }

相关文章: