• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一个具有上进心的码农
因为一篇文章中有很多是从很多篇文章中摘取的,请恕我没有一一说明摘取出处,如果没有说明,则该文章默认是摘取,如有侵犯您的权益,请与我联系,将会马上删除。
博客园    首页    新随笔    联系   管理    订阅  订阅

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的事务就完成了。

posted @ 2008-08-04 16:28  不若相忘于江湖  阅读(271)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3