欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

WCF之分布式事务

发布时间:2025/3/15 编程问答 30 豆豆
生活随笔 收集整理的这篇文章主要介绍了 WCF之分布式事务 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

首先讲解一下事务的几个很重要的性质。

 

Code
WCF 对分布事务提供了良好的支持,这使得我们可以协调多个服务之间的数据完整性。通过 TransactionFlowAttribute、ServiceBehaviorAttribute 和 OperationBehaviorAttribute 这三个特性,我们可以很好地控制事务的相关细节。

TransactionFlowAttribute 的构造参数 
"TransactionFlowOption transactions" 允许我们在强制事务(Mandatory)、允许参与事务(Allowed)和禁止事务(NotAllowed)间进行选择。

ServiceBehaviorAttribute 提供了多个属性参与事务控制。TransactionAutoCompleteOnSessionClose 指示当会话(Session)结束时是否自动提交事务(Complete); ReleaseServiceInstanceOnTransactionComplete 指示事务提交后是否释放服务实例对象; TransactionIsolationLevel 用于设置事务隔离方式(isolation level); TransactionTimeout 用于设置事务超时时间。

OperationBehaviorAttribute 的 TransactionScopeRequired 属性是 WCF 分布事务所必需使用的,它表明服务方法必须在事务范围(transaction scope)内执行。如果不添加该标记,则意味着服务方法不参与到事务中。TransactionAutoComplete 指示方法正常结束后自动提交事务。

 

 

采用WShttp形式。采用添加服务引用的方式。

 

1 在服务器端配置文件中,要加下如下代码。 放在  <system.serviceModel>里面

Code
  <bindings>
      
<wsHttpBinding>
        
<binding name="MyBinding" transactionFlow="True" />
      
</wsHttpBinding>
    
</bindings>
2  使用上面新增的BINDINGS Code
 <endpoint address="" binding="wsHttpBinding" bindingConfiguration="MyBinding" contract="Interface.IService" >

 

3 在接口的方法上面加上如下属性

Code
 [TransactionFlow(TransactionFlowOption.Mandatory)]

 

4 在实现接口类上面加上如下属性

 

Code
[OperationBehavior(TransactionScopeRequired=true)]

 

5 接下来就是客户端的调用了。

 

Code
  using (TransactionScope scope = new TransactionScope())
            {
             ServiceClient over 
= new ServiceClient();
             Data.Computer p 
=over.GetComputer();
            
             Console.WriteLine(p.ComputerName);
              Console.Read();

                scope.Complete();  
               
            }

 

 

至此。 一个WCF的事务就完成了。

转载于:https://www.cnblogs.com/z2002m/archive/2008/08/04/1260218.html

总结

以上是生活随笔为你收集整理的WCF之分布式事务的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。