2013-12-17 75 views
0

我正在尋找一個開箱即用的解決方案來獲取圍繞某些SOAP請求的僅服務器端事務。我明確地不尋找分佈式事務或WS- *標準,因爲它們改變了客戶端的接口,我只需要它作爲服務器端。單個服務器端事務中的多個SOAP請求

因此,對於客戶端:

webservice.StartTransaction(); // Or included in DoSomething(...) 
webservice.DoSomething(Whatever); 
webservice.DoSomethingElse(); 
webservice.CommitTransaction(); // Or included in DoSomethingElse() 

在服務器,交易必須在開始webservice.StartTransaction()和webservice.CommitTransaction承諾。如果在有限的時間內沒有提交,則事務應該回滾。

+0

這是非常不清楚。請求來自哪裏?服務器?服務器代碼是如何輸入的?根據客戶的要求? –

+0

請求來自客戶端:客戶端執行4次soap調用(示例中的那些調用)。然後,服務器必須在單個事務中處理這4個調用。 – Edwin

+0

我不確定你的意思是「改變客戶端的接口」。你指的是什麼「界面」? 「StartTransaction」已經寫好了嗎? –

回答

0

雖然您的要求並不完全清楚,但您可能需要考慮將Web服務協調(WS-Coordination)與Web服務原子事務(WS-AtomicTransaction)一起使用。

WS-Coordination規範描述了一個可擴展框架,用於提供協調分佈式應用程序操作的協議。此類協調協議用於支持許多應用程序,包括那些需要就分佈式活動的結果達成一致協議的應用程序。

http://docs.oasis-open.org/ws-tx/wstx-wsat-1.2-spec-os/wstx-wsat-1.2-spec-os.html

的WS-AtomicTransaction規範規定,是與在WS-協調描述的可擴展協調框架中使用的原子事務協調類型的定義。本規範爲Atomic Transaction協調​​類型定義了三個特定協議協調協議:完成,易失性兩階段落實和持久兩階段落實。開發人員可以在構建應用程序時使用任何或所有這些協議,這些應用程序需要對具有全部或無所有權的短期分佈式活動的結果達成一致的協議。

https://www.oasis-open.org/committees/download.php/35161/wstx-wscoor-1%202-spec-os.pdf

基於Microsoft的例子: http://msdn.microsoft.com/en-us/library/ms752261(v=vs.110).aspx

+0

是的,我想到了這一點,但它涉及到WS- *標準使客戶變得複雜。我希望客戶只做一些基本的soap調用,並在服務器中執行事務性的東西,所以'愚蠢的'客戶端仍然可以在那裏綁定一個原子事務中的調用。例如,文件上傳分兩步進行,第一步客戶端發送元數據(文件名,註釋等),服務器返回correlationId,在第二個SOAP調用中,客戶端只發送相關ID和文檔數據,然後發送服務器同時提交。 – Edwin

相關問題