2010-02-04 65 views
2

使用SOAP協議時,是否可以使用SOAP取消掛起的遠程函數調用?SOAP是否支持取消呼叫?

我看到三個不同的情況:

  • A)製作到需要很長的時間來完成一個服務的請求。例如,當複製包含大量文件的目錄時,文件複製循環是否可以取消? B)做出一個返回長列表的請求。例如,當查詢內存大的用戶名列表時,該列表響應的傳輸是否可以取消?

  • C)取消仍在內部呼叫隊列中的呼叫;換句話說,在服務器開始處理它之前。在短時間內發出大量異步呼叫時可能會發生這種情況。

回答

3

從視客戶端的點,取消同步(請求響應)SOAP呼叫是一樣的任何其他HTTP調用 - 只是斷開並停止監聽響應。一個寫得很好的服務器將在繼續進行冗長的操作之前檢查客戶端是否仍然連接(例如,在.NET中,服務器將檢查IsClientConnected),如果不是,則應該取消操作。

然而,單向通話不能以這種方式取消,因爲您已經發送了有效載荷並斷開連接。取消單向調用將需要在SOAP服務上顯式調用某種取消方法,它必須明確支持。

+0

感謝您的回覆。所以你做了一個假設,每個電話都會有一個新的連接。這不會嚴重傷害表現嗎? – 2010-02-05 09:20:09