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

















