簡體   English   中英

WCF分布式事務的事務協調器

[英]Transaction coordinator for wcf distributed transactions

我知道事務協調器用於協調不同類型的資源之間的事務,例如1)SQL Server 2)Oracle 3)MSMQ 4)文件系統等,並且它們有責任跟蹤事務以及是否有事務跟蹤資源失敗,它應該回滾WCF中所有其他資源的事務。

我想知道a)選擇哪個交易協調員,為什么b)我們可以自行選擇交易協調員,還是由wcf自行自動完成以下條件:-

1)如果wcf將事務用於相同的Microsoft技術(Microsoft SQL Server和Microsoft Message Queue)

2)如果wcf將事務用於不同的數據庫技術(Microsoft SQL Server,Oracle和MySQL)

3)如果wcf對具有不同技術(Microsoft SQL Server,Oracle,文件系統等)的所有不同類型的資源使用事務處理

我強烈建議不要在這樣的異構環境中使用DTC。 涉及多個風險。 其中只有一個限制了您的未來選擇:如果必須使用無法登記事務的文件系統(例如,網絡文件共享)怎么辦? 還是雲前端? 還是一些第三方服務?

而且DTC很難將系統的各個部分耦合在一起。 涉及各種耦合:空間,時間,甚至平台(因為每個人都必須知道如何加入特定的DTC)。

盡管在性能方面(DTC的性能要比沒有DTC的性能高數千倍 ),但DTC一直有效,直到沒有。 如果使用DTC,則應做好“交易有疑問”的准備,並做好各種故障排除的准備。 它應該是您設計的一部分。

在某些情況下,某些情況下系統中需要DTC,但是如果您發現自己處於交易和DTC的境地,就像是一把聖錘(我們只是開始交易,如果失敗了,我們“只是”回滾所有內容),我建議您立即停止。 如果您在此停留,將節省大量時間,錯誤,神經,金錢和資源。

我認為,進行不需要DTC的適當設計會更加合乎邏輯,並且更好。 請記住:業務不會回滾。 我們這樣做,程序員。 當資金從一個帳戶轉移到另一個帳戶(可能在不同的銀行)時,不涉及DTC,那將是瘋狂的。 他們不回滾,他們補償。 有適當的模式和方法可以做到這一點,我們不能僅僅將整個世界包裹在交易中。

因此,針對可以自主運行並彼此自然通信的獨立上下文設計系統,您將發現自己處於一個更好的世界中:)

我想說的是,如果您正在Windows服務器上運行應用程序,DTC女士將是最自然的選擇,因為它已作為本地Windows服務已成為操作系統的一部分。 http://blogs.msdn.com/b/florinlazar/archive/2004/03/04/what-is-msdtc-and-why-do-i-need-to-care-about-it.aspx

我以前在自定義軟件項目中將其用於WCF服務,並且可以完成這項工作。 如果是我,我會再次將其用於新項目,除非有非常特殊的理由不這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM