西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → WCF事務的概念與入門詳解 事務具有原子性、一致性、隔離性、和持久性

WCF事務的概念與入門詳解 事務具有原子性、一致性、隔離性、和持久性

相關軟件相關文章發(fā)表評論 來源:本站整理時間:2010/9/19 22:18:45字體大小:A-A+

作者:佚名點擊:187次評論:0次標簽: WCF

  • 類型:源碼相關大。79KB語言:中文 評分:5.0
  • 標簽:
立即下載

WCF事務是維持系統(tǒng)一致性并合理實現(xiàn)錯誤恢復的最好方法,這也是WCF事務的意義,事務具有原子性、一致性、隔離性、和持久性,其他的管理方式是使用類似ADO.NET的編程模型來

管理。因為事務協(xié)調(diào)的問題(尤其在分布式事務上),WCF使用了一個叫“兩階段提交事務管理協(xié)議”,在第一階段事務管理器詢問參與事務的資源,了解提交修改記錄時是否有所

保留,在第二階段,如果第一階段投票要求提交事務,則事務管理器將通知修改,反之,則會滾所作修改。

事務傳播
為了實現(xiàn)事務傳播,則必須啟用綁定,方法是在宿主配置文件中將TransactionFlow設置為true.

WCF還提供了TransactionFlowAttribute方法特性,控制客戶端是否將事務傳播到服務,他包含如下定義:

TransactionFlowAttribute.NotAllowed,客戶端禁止事務流
TransactionFlowAttribute.Allowed,允許但不肯定
TransactionFlowAttribute.Mandatory,必須使用事務流

事務協(xié)議
根據(jù)事務參與放執(zhí)行范圍,WCF會提供不同事務管理協(xié)議,有輕量級協(xié)議、OleTx協(xié)議、WS原子性協(xié)議,輕量級協(xié)議為程序級協(xié)議,即只能在程序域中使用事務傳播,OleTX為機器級

協(xié)議,只能在本地計算機傳播,WS原子協(xié)議使用HTTP協(xié)議可以跨Internet。

TCP,IPC默認使用OleTx協(xié)議,我們可以在配置文件的綁定中定義:transactionProtocol=“WSAtomicTransactionOctober2004”轉(zhuǎn)換為WS原子性協(xié)議。


事務管理器
WCF為我們提供第三方的事務管理器,來管理事務。這三個事務管理器分別是:輕量級事務管理器(LTM)、核心事務管理器(KTM)、分布式事務協(xié)調(diào)器(DTC),WCF能動態(tài)的為我

們分配管理器,當一個管理器不能滿足需求,WCF就會請求上一級的管理器來處理問題。


聲明事務
當明白了上面的內(nèi)容,我們還需要聲明事務,為了擁有一個事務,WCF必須標識每個契約方法,方法是設置TransactionScopeRequired=true,如:

Class Myservice:IMyContract

{

[OperationBehavior(TransactionScopeRequired=true)]

Public void MyMethod()

{

Transaction transaction=Transaction.Current;//獲取一個環(huán)境事務的引用

Debug.Assert(transaction!=null)//如果為空,則環(huán)境事務不存在

}

}

 

事務的傳播模式
不同的綁定事務流屬性(TransactionFlow)、契約中的事務流選項(TransactionFlowAttribute)、事務范圍屬性(TransactionScopeRequired)決定了事務將以何種模式進行傳

播,根據(jù)不同組合,可得到Client/Service、Client、Service、None四種不同的情況(具體配置方法參照《Programming WCF Services》中的介紹),Client/Service能使用客戶

端的事務,Client必須使用客戶端事務,Service則確保服務必須有一個事務,None則永遠不使用事務

 

投票完成事務
前面已經(jīng)學習了WCF的服務傳播方法,但是卻不知道WCF的事務何時提交或何時終止,所以我們投票決定事務的完成方式,WCF提供了自動和顯式兩種投票方式:

1,自動投票:

事務投票只需要在聲明事務時,再聲明TransactionAutoComplete值為true即可,如:

[OperationBehavior(TransactionScopeRequired=true,TransactionAutoComplete=true)]
Public void MyMethod()

{

}

2.顯式投票:
顯式投票首先關閉自動投票,即TransactionAutoComplete=false,
在服務操作返回結(jié)果前使用OperactionContext.Current.SetTransactionComplete();

事務的屬性
事務可以設置隔離級別和超時時間,分別為設置ServiceBehavior的TransactionIsolationLevel和TransactionTimeout的值

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)