三分鐘了解WCF事務(wù)
經(jīng)過長(zhǎng)時(shí)間學(xué)習(xí)WCF,對(duì)它還是很熟悉的,這里就和大家分享一下關(guān)于WCF事務(wù)的概念,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。兩個(gè)應(yīng)用程序之間的通信有很多種方式,比如,我們可以使用XML與Webservice通信,使用消息與MSMQ互通,使用XML或二進(jìn)制流與.NetRemoting通信等等。
#T#但是如果一個(gè)應(yīng)用程序需要同時(shí)使用這幾種來完成功能的話將給維護(hù)帶來相當(dāng)大的麻煩,WCF的出現(xiàn)則統(tǒng)一了這種局面,WCF是什么?WCF是通過一種面向服務(wù)的新型編程模型簡(jiǎn)化了關(guān)聯(lián)應(yīng)用程序的開發(fā)。通過提供分層的體系結(jié)構(gòu),WCF 支持多種風(fēng)格的分布式應(yīng)用程序開發(fā)。 WCF 通道體系結(jié)構(gòu)在底層提供了異步的非類型化消息傳遞基元。而建立在此基礎(chǔ)之上的是用于進(jìn)行安全可靠的事務(wù)處理數(shù)據(jù)交換的各種協(xié)議功能,以及廣泛的傳輸協(xié)議和編碼選擇。WCF事務(wù)原本是一件難于實(shí)現(xiàn)的事情,可WCF總是能化腐朽為神奇,它能夠通過簡(jiǎn)單的聲明式編程方式,便可以實(shí)現(xiàn)分布式的WCF事務(wù),下面就來看下實(shí)現(xiàn)此目標(biāo)的功臣:
1) TransactionFlowAttribute:操作契約(OperationContractAttribute)的一個(gè)屬性,它能夠指示所屬操作(Operation)的事務(wù)選項(xiàng)(TransactionFlowOption)。
2) TransactionFlowOption:它是TransactionFlowAttribute構(gòu)造函數(shù)中的參數(shù),是一個(gè)枚舉(enum),包括三個(gè)枚舉項(xiàng)NotAllowed:不允許事務(wù),是缺省值;Allowed:允許事務(wù),意味著事務(wù)可有可無;Mandatory:強(qiáng)制事務(wù),表示事務(wù)是必須的。
3) TransactionAutoCompleteOnSessionClose:它是操作行為(OperationBehaviorAttribute) 的一個(gè)屬性,用于標(biāo)注事務(wù)完成之后,服務(wù)端實(shí)例是否自動(dòng)釋放,這個(gè)屬性和服務(wù)對(duì)象實(shí)例模式緊密相關(guān),使用的時(shí)候,應(yīng)該著重小心,下面也會(huì)有說明。
4) TransactionIsolationLevel:也是操作行為(OperationBehaviorAttribute)的一個(gè)屬性,用于指示事務(wù)隔離方式(isolation level).包括5中選項(xiàng):Any,ReadUncommitted,ReadCommitted,RepeatableRead,Serializable,事務(wù)的隔離方式相關(guān)知識(shí)比較復(fù)雜,留作文章的第二點(diǎn)中將具體闡述
5) TransactionTimeout:也是操作行為(OperationBehaviorAttribute)的一個(gè)屬性,用于指示事務(wù)的超時(shí)時(shí)間,默認(rèn)為TimeSpan.Zero,表示不會(huì)受超時(shí)時(shí)間的限制..:: OperationBehaviorAttribute:也是操作行為(OperationBehaviorAttribute)的一個(gè)屬性,用于指示分布式事務(wù)選項(xiàng),如果設(shè)置為true,那么必須在事務(wù)范圍(Transaction Scorp)內(nèi)。
通過上面幾個(gè)屬性的使用,我們便能夠輕松的在WCF中實(shí)現(xiàn)事務(wù)以及分布式事務(wù)。