本文目的
通過閱讀本文,您能瞭解以下知識
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中實現事務以及分散式交易。具體實現方式可以參考代碼範例