分布式事務原理及使用范例一則
來源:懂視網(wǎng)
責編:小采
時間:2020-11-09 14:31:52
分布式事務原理及使用范例一則
分布式事務原理及使用范例一則:摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+300
導讀分布式事務原理及使用范例一則:摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+300
摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+3000 where name=b 場景: 假設在第1
摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。
假設案例:A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name='a' update account set Amount=Amount+3000 where name='b' 場景:假設在第1行代碼執(zhí)行成功,第2行代碼還未執(zhí)行的情況下。未繼續(xù)執(zhí)行。 結(jié)果:A的錢沒了!B沒收到錢!
此時推薦使用分布式事務來解決這類問題。
解決方案 應該實現(xiàn)原子性:要么全部成功、要么全部失?。ɑ貪L)
事務: 事務(Transaction)的特征是“原子性”,也就是“要么全部成功,要么全部失敗”。事務實現(xiàn)還是有很多方法,最常見的就是使用鏈接相關SqlTransaction SqlTransaction 優(yōu)點:1 不需要做客戶端、服務器端的配置;2 無須啟用事務協(xié)調(diào)服務(MSDTC) 缺點:無法實現(xiàn)分布式事務、嵌套事務、編寫麻煩。
TransactionScope用來實現(xiàn)分布式事務(可以跨數(shù)據(jù)庫、跨機器操作)的步驟 1 Windows服務中開啟MSDTC(Distributed Transaction Coordinator),并且啟動類型改為“自動”。注意:需要在ADO.NET端和數(shù)據(jù)庫端上需要都進行相同操作。 2 項目添加對System.Transactions的引用 代碼范例:
//包起來就會兩者一起。一起成功,或者一起失敗
using(TransactionScope ts=new TransactionScope())
{
"update Account set Amount=Amount-3000 where name='a'";//從A賬戶扣錢的操作
"update account set Amount=Amount+3000 where name='b'"http://向B賬戶增加錢的操作
ts.Complete();//忘記這句話,兩個都插入失敗
}
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
分布式事務原理及使用范例一則
分布式事務原理及使用范例一則:摘要:在軟件開發(fā)和數(shù)據(jù)庫操作中,經(jīng)常出現(xiàn)需要共同進退的情況,要么一起成功,要么一起失敗。 假設案例: A向B轉(zhuǎn)賬3000元rmb。 update Account set Amount=Amount-3000 where name=a update account set Amount=Amount+300