談?wù)勱P(guān)于WCF事務(wù)屬性
大家都知道事物是一種不可在分的原子操作,這里就WCF事務(wù)和大家簡單的分析一下。WCF提供的事務(wù)機(jī)制,其實(shí)除了利用已有的.NET 框架提供的事務(wù)機(jī)制外,還根據(jù)自身需求進(jìn)行了擴(kuò)展。這個(gè)問題不難理解。WCF編程模型告訴我們,WCF的應(yīng)用通常包含客戶系統(tǒng)、WCF服務(wù)系統(tǒng)。
事務(wù)概念 :什么是事務(wù)呢?其實(shí)這個(gè)事一個(gè)數(shù)據(jù)庫系統(tǒng)中的一個(gè)概念。事務(wù)(Transaction)是并發(fā)控制的基本單位。所謂事務(wù),它是一個(gè)操作序列,這些操作要么都執(zhí)行,要么都不執(zhí)行,它是一個(gè)不可分割的工作單位。
例如,銀行轉(zhuǎn)帳:通常包括兩個(gè)操作:從一個(gè)帳號A扣款;使另一個(gè)帳號B增款。
這兩個(gè)操作要么都執(zhí)行,要么都不執(zhí)行。在銀行系統(tǒng)里,數(shù)據(jù)庫系統(tǒng)執(zhí)行相關(guān)的命令來完成兩個(gè)操作。事務(wù)是數(shù)據(jù)庫維護(hù)數(shù)據(jù)一致性的單位,在每個(gè)事務(wù)結(jié)束時(shí),都能保證數(shù)據(jù)一致性。連個(gè)賬號的金額不會出現(xiàn)錯誤。保證轉(zhuǎn)賬操作的正確完成。
#T#WCF事務(wù)屬性:WCF事務(wù)也有自己的特性。這個(gè)大家都非常的熟悉。相信每個(gè)數(shù)據(jù)庫相關(guān)的書籍都會介紹事務(wù)的特性ACID。 事務(wù)處理可以確保除非事務(wù)性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為一個(gè)要么全部成功要么全部失敗的單元,可以簡化錯誤恢復(fù)并使應(yīng)用程序更加可靠。一個(gè)邏輯工作單元要成為事務(wù),必須滿足所謂的ACID(原子性、一致性、隔離性和持久性)
1.WCF事務(wù)屬性原子性:
事務(wù)必須是原子工作單元;對于其數(shù)據(jù)修改,要么全都執(zhí)行,要么全都不執(zhí)行。通常,與某個(gè)事務(wù)關(guān)聯(lián)的操作具有共同的目標(biāo),并且是相互依賴的。一個(gè)事務(wù)要被完全的無二義性的做完或撤消。在任何操作出現(xiàn)一個(gè)錯誤的情況下,構(gòu)成事務(wù)的所有操作的效果必須被撤消,數(shù)據(jù)應(yīng)被回滾到以前的狀態(tài)。比如轉(zhuǎn)賬事務(wù)中的兩個(gè)操作,要么全執(zhí)行,要么全部執(zhí)行。
2.WCF事務(wù)屬性一致性:
事務(wù)在完成時(shí),必須使所有的數(shù)據(jù)都保持一致狀態(tài)。在相關(guān)數(shù)據(jù)庫中,所有規(guī)則都必須應(yīng)用于事務(wù)的修改,以保持所有數(shù)據(jù)的完整性。事務(wù)結(jié)束時(shí),所有的內(nèi)部數(shù)據(jù)結(jié)構(gòu)(如 B 樹索引或雙向鏈表)都必須是正確的。某些維護(hù)一致性的責(zé)任由應(yīng)用程序開發(fā)人員承擔(dān),他們必須確保應(yīng)用程序已強(qiáng)制所有已知的完整性約束。例如,A賬戶里 10000元,B賬戶0元,轉(zhuǎn)賬成功以后。A和B賬戶的總額保持不變。還是10000元。不會因?yàn)檗D(zhuǎn)賬成功就增加了總額。
3.WCF事務(wù)屬性隔離性:
由并發(fā)事務(wù)所作的修改必須與任何其它并發(fā)事務(wù)所作的修改隔離。事務(wù)查看數(shù)據(jù)時(shí)數(shù)據(jù)所處的狀態(tài),要么是另一并發(fā)事務(wù)修改它之前的狀態(tài),要么是另一事務(wù)修改它之后的狀態(tài),事務(wù)不會查看中間狀態(tài)的數(shù)據(jù)。這稱為可串行性,因?yàn)樗軌蛑匦卵b載起始數(shù)據(jù),并且重播一系列事務(wù),以使數(shù)據(jù)結(jié)束時(shí)的狀態(tài)與原始事務(wù)執(zhí)行的狀態(tài)相同。當(dāng)事務(wù)可序列化時(shí)將獲得最高的隔離級別。在此級別上,從一組可并行執(zhí)行的事務(wù)獲得的結(jié)果與通過連續(xù)運(yùn)行每個(gè)事務(wù)所獲得的結(jié)果相同。串行執(zhí)行事務(wù):在一個(gè)事務(wù)執(zhí)行過程中,數(shù)據(jù)的中間的(可能不一致)狀態(tài)不應(yīng)該被暴露給所有的其他事務(wù)。
兩個(gè)并發(fā)的事務(wù)應(yīng)該不能操作同一項(xiàng)數(shù)據(jù)。數(shù)據(jù)庫管理系統(tǒng)通常使用鎖來實(shí)現(xiàn)隔離。
4.WCF事務(wù)屬性持久性:
WCF 支持分布式事務(wù),也就是說事務(wù)可以跨越服務(wù)邊界、進(jìn)程、機(jī)器、網(wǎng)絡(luò),在多個(gè)客戶端和服務(wù)之間存在。而與此對應(yīng)的事務(wù)數(shù)據(jù)信息傳播和管理的協(xié)議不同。