Welcome

首页 / 软件开发 / .NET编程技术 / WCF从理论到实践(12):事务

WCF从理论到实践(12):事务2010-08-24 cnblogs jillzhang本文目的

通过阅读本文,您能了解以下知识

1) 如何在WCF中实现事务?

2) 谈谈事务隔离方式的相关知识

3) 事务的实现会给我们编程带来什么样的阻力?

4) 一笔带过,WCF是如何实现分布式事务的?

5) 代码不骗人,用一个银行存取款的范例来演练WCF事务

本文适合的读者

本文适合WCF初学者,学习本文之前,您最好阅读一下WCF从理论到实践系列文章的前几篇

如何在WCF中实现事务?

事务原本是一件难于实现的事情,可WCF总是能化腐朽为神奇,它能够通过简单的声明式编程方式,便可以实现分布式的事务,下面就来看下实现此目标的功臣:

1) TransactionFlowAttribute:操作契约(OperationContractAttribute)的一个属性,它能够指示所属操作(Operation)的事务选项(TransactionFlowOption)。

2) TransactionFlowOption:它是TransactionFlowAttribute构造函数中的参数,是一个枚举(enum),包括三个枚举项NotAllowed:不允许事务,是缺省值;Allowed:允许事务,意味着事务可有可无;Mandatory:强制事务,表示事务是必须的。

3) TransactionAutoCompleteOnSessionClose:它是操作行为(OperationBehaviorAttribute)的一个属性,用于标注事务完成之后,服务端实例是否自动释放,这个属性和服务对象实例模式紧密相关,使用的时候,应该着重小心,下面也会有说明。

4) TransactionIsolationLevel:也是操作行为(OperationBehaviorAttribute)的一个属性,用于指示事务隔离方式(isolation level).包括5中选项:Any,ReadUncommitted,ReadCommitted,RepeatableRead,Serializable,事务的隔离方式相关知识比较复杂,留作文章的第二点中将具体阐述

5) TransactionTimeout:也是操作行为(OperationBehaviorAttribute)的一个属性,用于指示事务的超时时间,默认为TimeSpan.Zero,表示不会受超时时间的限制..:: OperationBehaviorAttribute:也是操作行为(OperationBehaviorAttribute)的一个属性,用于指示分布式事务选项,如果设置为true,那么必须在事务范围(Transaction Scorp)内。

通过上面几个属性的使用,我们便能够轻松的在WCF中实现事务以及分布式事务。具体实现方式可以参考代码范例