2016-08-25 65 views
1

我們公開可以公開POST,PUT,GET和DELETE操作的REST服務。消費者通常以這種方式設計用戶界面,只需點擊一下用戶即可創建,更新和刪除。如果他們向我們發送了三次PUT POST和DELETE調用,那麼它們中的一個可能會失敗並導致數據不一致。 目前我們創建一個包裝服務,允許他們調用一個調用所有三個操作的服務,並且我們保證一個事務與JBOSS事務控制,所以如果一個操作失敗,那麼所有的事務都會回滾。確保多個REST調用的事務已完成

是否有更好的方式來處理這個,這可以幫助我們避免創建這些包裝服務?

回答

0

簡答:不,沒有。

您正在爲您的REST服務尋找「交易」支持。有很多在線資料(儘管沒有開箱即用的解決方案),包括這個確切的問題:Transactions in REST?

我認爲重要的是要注意事務的概念有點與無狀態分佈式系統的概念相沖突。有一些人致力於將事務交給REST(https://www.atomikos.com/Blog/TransactionsForTheRESTOfUs,http://www.jboss.org/reststar/specifications/transactions.html),但通常解決方案是以不需要分佈式事務的方式來設計系統。

直接導出數據庫記錄操作,因爲CRUD操作是大多數時間的罪魁禍首。如果你這樣做,只是想出一些對客戶有實際意義的資源,你會發現你的大部分問題都消失了。

作爲一個爲金融機構工作的旁註,需要將資金從一個賬戶轉賬到另一個賬戶的經典例子相當簡單。它在現實生活中並不這樣,在這個意義上很多(包括某些形式的實際資金轉移)並不是交易性的。

相關問題