2012-09-29 72 views
0

是否可以創建包含執行某些操作的方法的Web服務,然後期望返回值/操作來提交這些操作?具有事務提交的C#web服務方法返回

我需要一個返回一些值的方法。在返回這些值的過程中,需要插入一些數據。收到這些返回值後,我需要確保能夠處理它們,然後提交初始方法。

如果該方法沒有收到flag/commit/whatever,則會回滾插入。

這可能嗎? (對不起,如果措辭不清楚,希望我是不可理喻的)

我這樣做是因爲我需要獲得一組數據,即慢與常規SQL返回。我正在計劃在服務器上壓縮(格式化)數據(使用Web服務),並讓該方法以壓縮二進制類型將其返回給我。如果在獲取或處理壓縮二進制文件時出現問題,我需要能夠回滾整個過程。

回答

1

爲了在單個Web服務調用接收到Web服務響應後完成Web服務端的提交是不可能的,恐怕是不可能的。 Http Web服務是無狀態的,您可以使用會話使其處於有狀態。您可以創建兩個服務,一個用於接收響應,另一個用於執行提交。在這兩個調用之間,如果可以提供幫助,您可以使用會話。

  1. 調用以接收一組值。您可以爲下一次呼叫超時設置會話,例如您不應該在第一個電話中開始交易。只需返回結果。如果你的結果是按照提交交易保存數據的要求。您可以在DB記錄中標記一些標誌,指示第一次調用中的不完整事務,並相應地提交或刪除第二次調用並設置標誌。

  2. 根據第一個調用結果調用commit,並將事務放在這裏以保存數據。

+0

那麼它有可能呢:)?如果我從來沒有做過No2,交易是否會不定期地掛起?我選擇什麼樣的交易,開始? –

+0

您不應在第一次通話中開始交易。只需返回結果。如果你的結果是按照提交交易保存數據的要求。 – Adil

+0

這會破壞目的,獲取數據,然後再將其上傳。我可以將其標記爲好,但這不是我正在尋找的解決方案。 –

0

我想你需要兩個網絡服務(如果我正確理解你的問題)。第一個執行該操作並返回一個值。如果調用程序驗證返回值,它會調用第二個Web服務來執行提交。合理?

+0

執行提交意味着提交事務?如果是的話,我選擇什麼樣的交易,開始?什麼事務可以從一個會話中調用並在第二個會話中提交?我希望你的意思是**兩種Web服務方法**。 –

0

我認爲解決方案應該是這樣的。

Method 1 - Create record and return the uid of it. Insert record in pending state 
Method 2 - Take parameter of created record and operation (approve or reject). Change the state of the record entered in method1. 
+0

是的,我可以走這條路線,標記數據。沒關係。但問題依然存在。答案是我想,不。 –