经过长时间学习WCF,对它还是很熟悉的,这里就和大家分享一下关于WCF事务的概念,看完本文你肯定有不少收获,希望本文能教会你更多东西。两个应用程序之间的通信有很多种方式,比如,我们可以使用XML与Webservice通信,使用消息与MSMQ互通,使用XML或二进制流与.NetRemoting通信等等。
#T#但是如果一个应用程序需要同时使用这几种来完成功能的话将给维护带来相当大的麻烦,WCF的出现则统一了这种局面,WCF是什么?WCF是通过一种面向服务的新型编程模型简化了关联应用程序的开发。通过提供分层的体系结构,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中实现事务以及分布式事务。