2010-10-15 69 views
0

是否存在任何指示異步調用與其相應響應之間的最長時間的最佳實踐。異步調用和響應之間的最長時間(網絡服務)

基本上我有一個需要很長時間才能運行的進程(例如:5分鐘)。 選項1:我可以將進程公開爲異步調用。在這種情況下,用戶呼叫我的服務,然後在稍後的時間,我回復過程狀態。

選項2 我可以實現它的另一種方式是設置系統,使得在我的web服務的單向操作即開始處理,並立即返回一個id的過程。然後,我可以要求消費者提供單向操作,我可以在流程完成時致電並報告。

第一個選項更容易,因爲我不必從調用者那裏強制任何東西。第二個似乎更好,因爲我可以隨時報告(5分鐘到幾年後)。

因爲我有來電和它的內部可用的服務完全控制,我傾向於選擇2.

如果有強加於異步調用(他們可以跨越數日的時間限制所以我想知道?如果不是最佳做法)。選項2是否採用標準模式?

參考文獻將非常有用。

回答

2

選項#2更好,因爲它是更多的事件驅動。

但是,存在選項#3。客戶端向服務器發出請求。服務器隊列請求並響應該ID。客戶每隔一段時間檢查一次,傳遞請求ID以查看是否完成。

這樣您就不必依賴客戶端在請求完成時可用。

我可能會混合選項#2和#3,並讓客戶選擇他們是否希望在他們身邊發起一個事件,或者他們是否希望稍後再檢查。

UPDATE
王公已經詢問了異步請求和響應之間的最長時間。對於WEB應用程序,通常以秒爲單位進行測量。大多數服務器具有通常在30秒範圍內默認的超時值。我個人認爲這太長了。

考慮到異步調用需要客戶端和服務器之間的通信通道在此期間打開。一臺服務器可以處理多少個這樣的通道?更重要的一點是,您有多少個渠道需要維護?即使你控制兩端,這可能會變得非常無禮。

無論託管您的服務是確定請求打開的最長時間。同樣,我見過的每臺服務器都會在幾秒鐘內完成測量。

+1

選項3將對任何可能需要幾秒鐘的進程進行投票。 – Wrikken 2010-10-15 23:47:30

+0

這是一個很好的答案。我會標記它的答案 - 但未得到回答的部分是:異步請求和響應之間的最長時間是多少? – 2010-10-18 22:04:10

相關問題