2009-01-27 52 views
1

是否有一個很好的C++框架來實現XA分佈式事務?XA分佈式事務處理C++

術語「好」我的意思是可用,簡單(並不意味着「簡單」),結構良好。

由於學習的原因,目前我正在按照X/Open XA規範進行個人實現。

預先感謝您。

回答

2

雖然This link確實有一些扇出,但我並不知道具有任何成熟度的開源或免費事務監視器。現有的商業版本是BEA's Tuxedo, Tibco的Enterprise Message Service(真的是像IBM的MQ這樣的交易消息隊列管理器)和Transarc的Encina(現在由IBM擁有)。這些系統都是非常昂貴的

如果您想自己製作(並且在開放源代碼軟件空間中填寫無效的名稱),請獲取Grey and Reuter的副本。 這是關於事務處理系統體系結構的權威性工作,由兩位該領域的最重要的專家撰寫。

有趣的是,他們聲稱可以在約10,000行C中實現一個工作TP監視器。這實際上聽起來很合理,因爲它所做的並不是那麼複雜。有時候我一直在試圖嘗試。

本質上,您需要創建一個作爲守護進程運行的分佈式事務協調器。您將需要從中獲取資源管理器協議,因此以此作爲原型開始可能是一個好的開始。如果您可以獨立回滾或提交事務,則您擁有TM-RM接口的基礎。

規範中定義的XA API是控制事務管理器的API。嚴格地說,你不需要使用三層架構來使用這種分佈式事務,但是如果沒有TP監視器,它們或多或少都是毫無意義的。從前端到中間層的溝通方式可以作爲讀者的練習。您可能最好使用現有的ORB,其中有好幾種可用的開源實現。

根據您是否想讓DTC和應用服務器分開進程(這可能需要穩定性但不是絕對必要),您也可以使用ACE作爲DTC服務器的基礎。

如果您想製作高性能的中間層服務器,請查看Douglas Schmidt的ACE framework。這帶有一個名爲TAO的ORB,並且具有足夠的靈活性,可以讓您使用更多或更少的任何線程模型。使用它是在學習它和編寫自己的工作以及調試所有同步和併發問題之間的一種折衷。

+0

小問題真的但是甲骨文收購了BEA並且現在擁有了Tuxedo。 – Jackson 2009-01-27 21:22:11

0

對於您的任務可能相當晚,但它對其他用戶可能很有用:LIXA不是「框架」,但它爲TX事務劃分規範提供了實現,並支持大部分XA功能。 TX規範適用於C和COBOL語言,但C++項目中的C版本的集成應該毫不費力。

相關問題