background image

一:

WCF 事务设置

事务提供一种机制将一个活动涉及的所有操作纳入到一个不可分割的执行单元;

WCF 通过 System.ServiceModel.TransactionFlowAttribute 特性定义在契约的相应操作方法上;

TransctionFlowOption 三个选项:NotAllowed、Allowed、Mandatory 不同的事务流转策略;

1:NotAllowed(默认) 客户端的事务不会允许被流转到服务端,服务端也不会试图去接
收流入的事务;

2:Allowed 如果客户端的事务在,则被流转到服务端,服务端会试图去接收流入的事务;

3:Mandatory 客户端必须在一个事务中进行服务调用,相应的事务会被流转到服务端。服
务端接收到的消息

  中必须包含被序列化的事务;

    [ServiceContract]
    public interface IBankingService
    {
        [OperationContract]
        [TransactionFlow(TransactionFlowOption.Allowed)]
        void Transfer(string fromAccountId, string toAccountId, double amount);
    }

由于分布式事务在客户端和服务端之间协调过程依赖于它们之间的相互消息交换,因此在
一个单向(

One-Way)

  操 作 契 约 上 不 允 许 将 应 用 在 上 面 的 TransctionFlowAttribute 特 性 指 定 为 : Allowed  或

 

Mandatory [P143]

 

二:事务与绑定的联系

支持事务绑定的除

BasicHttpBinding(基于 WS-I Basic Profile 标准绑定)、NetMsmqBinding

(只能采用单工的消息交换)、

      MsmqIntegrationBinding(只能采用单工的消息交换) 其它都有事务的流转能力;