软件发布

手机版,更便捷!

下载排行榜首页软件下载安卓下载资讯教程推荐专题装机必备
当前位置:文章资讯 > 编程开发 >

WCF事务的概念是什么?WCF事务入门介绍

时间:2016-12-16 浏览次数: 编辑:9upk

WCF事务是维持系统一致性并合理实现错误恢复的最好方法,这也是WCF事务的意义,事务具有原子性、一致性、隔离性、和持久性,其他的管理方式是使用类似ADO.NET的编程模型来

管理。因为事务协调的问题(尤其在分布式事务上),WCF使用了一个叫“两阶段提交事务管理协议”,在第一阶段事务管理器询问参与事务的资源,了解提交修改记录时是否有所

保留,在第二阶段,如果第一阶段投票要求提交事务,则事务管理器将通知修改,反之,则会滚所作修改。

事务传播
为了实现事务传播,则必须启用绑定,方法是在宿主配置文件中将TransactionFlow设置为true.

WCF还提供了TransactionFlowAttribute方法特性,控制客户端是否将事务传播到服务,他包含如下定义:

TransactionFlowAttribute.NotAllowed,客户端禁止事务流
TransactionFlowAttribute.Allowed,允许但不肯定
TransactionFlowAttribute.Mandatory,必须使用事务流

事务协议
根据事务参与放执行范围,WCF会提供不同事务管理协议,有轻量级协议、OleTx协议、WS原子性协议,轻量级协议为程序级协议,即只能在程序域中使用事务传播,OleTX为机器级

协议,只能在本地计算机传播,WS原子协议使用HTTP协议可以跨Internet。

TCP,IPC默认使用OleTx协议,我们可以在配置文件的绑定中定义:transactionProtocol=“WSAtomicTransactionOctober2004”转换为WS原子性协议。


事务管理器
WCF为我们提供第三方的事务管理器,来管理事务。这三个事务管理器分别是:轻量级事务管理器(LTM)、核心事务管理器(KTM)、分布式事务协调器(DTC),WCF能动态的为我

们分配管理器,当一个管理器不能满足需求,WCF就会请求上一级的管理器来处理问题。


声明事务
当明白了上面的内容,我们还需要声明事务,为了拥有一个事务,WCF必须标识每个契约方法,方法是设置TransactionScopeRequired=true,如:

Class Myservice:IMyContract

{

[OperationBehavior(TransactionScopeRequired=true)]

Public void MyMethod()

{

Transaction transaction=Transaction.Current;//获取一个环境事务的引用

Debug.Assert(transaction!=null)//如果为空,则环境事务不存在

}

}

事务的传播模式
不同的绑定事务流属性(TransactionFlow)、契约中的事务流选项(TransactionFlowAttribute)、事务范围属性(TransactionScopeRequired)决定了事务将以何种模式进行传

播,根据不同组合,可得到Client/Service、Client、Service、None四种不同的情况(具体配置方法参照《Programming WCF Services》中的介绍),Client/Service能使用客户

端的事务,Client必须使用客户端事务,Service则确保服务必须有一个事务,None则永远不使用事务

投票完成事务
前面已经学习了WCF的服务传播方法,但是却不知道WCF的事务何时提交或何时终止,所以我们投票决定事务的完成方式,WCF提供了自动和显式两种投票方式:

1,自动投票:

事务投票只需要在声明事务时,再声明TransactionAutoComplete值为true即可,如:

[OperationBehavior(TransactionScopeRequired=true,TransactionAutoComplete=true)]
Public void MyMethod()

{

}

2.显式投票:
显式投票首先关闭自动投票,即TransactionAutoComplete=false,
在服务操作返回结果前使用OperactionContext.Current.SetTransactionComplete();

事务的属性
事务可以设置隔离级别和超时时间,分别为设置ServiceBehavior的TransactionIsolationLevel和TransactionTimeout的值

标签: WCF

上一篇:又抓到虫子了:IE中奇怪的应用CSS的BUG分析下一篇:如何使用服务器缓存?如何实现服务器缓

相关文章

最新评论

本类排行榜

图文专题

  • 类地下城割草手游推荐
  • 种菜小游戏
  • 单机打鱼游戏
  • 好玩的放置修仙手游