簡體   English   中英

如何通過Web服務(如工作單元)實施長時間運行的事務

[英]How to implement long-running transactions over a web service, like unit of work

我正在設計一個Web服務和一個使用該Web服務的桌面客戶端應用程序。 該接口要求您必須能夠執行多個操作並一次提交所有操作。 這些操作是基本的CRUD操作(創建,讀取,更新,刪除)。

這是工作流的大致示例,它是經過汽車驗證的:

服務電話的粗略想法

問題在於服務調用可能會隨時間分散。 我最初創建的是REST Web服務,但是按照定義,REST不應該是事務性的。 該界面必須能夠一次性將所有操作提交到數據庫(單擊“保存”按鈕)。

編輯:一個重要的規定是給定上面的示例,必須在服務器上的數據庫中存在汽車才能向其添加座位。 在交易中,該汽車僅對在該交易中工作的人(會話)可用。 這限制了在工作流結束時一次將所有操作發送到Web服務的能力。

到目前為止,我考慮的選項有:

1)使用SOAP(WCF 實現分布式事務,並且僅在GUI上單擊“保存”時才提交。 對於更長的交易壽命,這可能/一個好主意嗎?

2)創建一個工作單元“服務”,該單元接受操作並在服務器上的一個事務中執行所有操作。

我的問題是,是否1)可行,還是好/壞主意? 2)是一個好主意,是否有任何模式/工具可在整個Web服務(REST或SOAP)中實現? 還是有其他方法可以解決此問題?

我會嘗試這樣的:

POST /unit-of-work 
   create with response 200
POST /car
   create with response 202
POST /seat
   create with response 202
etc.
PUT /unit-of-work
   set "execute" bit, or somesuch

在這種情況下,汽車,座椅等在發布時具有指定的工作單位。 當工作單元更新為“完成”時,將執行所有項目。

另一種方法是:

POST /car
   create with response 202
POST /seat
   create with response 202
etc.
POST /unit-of-work response 200

在這種情況下,汽車,座椅等有一些設置,說明尚未創建。 工作單元應指定屬於哪個資源,然后后端可以翻轉其他資源上的位,以便創建它們。

暫無
暫無

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

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