我正在研究爲應用程序編寫Web服務。在這個應用程序中,我們處理事務中的所有事情,因爲「工作單元」通常不是單個實體,而是跨越多個表的多個實體。有些情況下我們希望「全部或全部」,並且交易非常有意義。但我不確定如何在網絡服務中做到這一點,也不應該如此。Web服務應該是事務性的嗎?
我覺得Web服務應該是無狀態的,提供的API應該建立在每個實體的基礎上,但我不確定如何處理「部分工作」,如果一部分失敗,應該發生回滾。
Web服務應該是事務性的嗎?你將如何實現交易,是否會沿着發送「BEGIN TRANSACTION」並以「END TRANSACTION」結束?
如果網絡服務是無狀態的,你如何處理不是獨立的「工作單元」? 有沒有關於這個話題我可以閱讀的任何明確的文獻?
感謝,
我認爲Web服務層不會是事務中的actor,而是請求事務由下面的層完成,並將結果報告給客戶端,無論是提交還是回滾。如果您被要求提供超越一個應用程序節點內可能發生的事務邏輯,我會稱之爲「設計異味」。 – wberry