2016-06-30 94 views
1

當客戶端調用此方法時,我有一個ASP.NET API方法我將運行4個任務,每個任務去並調用一個url收集數據並將它作爲對象列表返回。現在每項任務都需要不同的時間來完成,所以我正在尋找的是這樣的。長時間運行異步API方法

  • JavaScript的AJAX調用我的API方法
  • 的API方法運行4個任務等待任何完成任務並返回數據
  • AJAX調用回來的API,看看哪些任務完成,再取數據和它顯示在瀏覽器

現在我對這個解決方案是將數據保存在內存數據庫線couchbase任務返回然後讓瀏覽器上的計時器調用API檢查如果有任何新的數據已被添加,然後將其拿到所有任務完成。

我的問題是。是否有任何其他解決方案。我不希望使用asp.net signalr

爲了使我的想法清楚這裏是我在我的腦海

  • 客戶端調用API方法
  • API方法連接隊列列表任務來遲髮型
  • 每個職業都會去調用其他的API獲取數據的過程,並將其記錄到內存數據庫,我將使用couchbase
  • 當我的API方法完成登錄作業其返回一個關鍵客戶
  • 客戶端可以使用此鍵來調用其他API方法,返回他的最新數據

該解決方案針對此問題

  • 我有一個API方法,去尋找使用多個酒店酒店提供商
  • 每個提供程序都會返回稍後需要處理此數據並將其返回給客戶端的數據。
  • 由於每個供應商都有自己的處理時間。一些供應商在5秒後給我回應,其他一些供應商30秒,其中一些甚至更多。
  • 我不希望客戶端等待所有提供者完成,而是希望客戶端儘快獲得結果以在瀏覽器上顯示它,然後每次我都可以更新UI並檢查是否有新的提供商已完成將數據返回給我
+0

我沒有做很多AJAX,但我的理解是它的固有異步的。難道你沒有開發一個任務,並提供一個回調,當收到來自服務器的迴應時被調用?這就是爲什麼服務器處理需要一段時間才重要? – Ian

+0

當第一項任務完成時,我只能提供回電。可以說我正在運行4個任務異步。當第一個完成我可以返回數據給客戶端。我不想等待所有這些完成以便返回數據,否則可以說其中一個任務需要30秒,其他每個將花費1秒,在這種情況下,客戶端應該等待30秒以便看到數據。我正在尋找的是1秒後返回數據,然後不斷向服務器詢問新數據。 – mhdbaz

+0

您尚未明確且完整地指定您的要求。 – Ian

回答

0

使用signalR進行推送通知。數據準備就緒後,只需向客戶端發送推送通知,即可準備好數據。

+0

我不能使用signalR。 – mhdbaz

0

,如果你不希望使用SinglR有https://pusher.com/可以幫助你

+0

我不能使用任何外部的東西。我應該從零開始執行此操作,並且我不能使用任何第三方工具或服務。 – mhdbaz

+0

好吧,假設您有4個數據源,讓客戶端瀏覽器向您的服務器發起4個Ajax請求,每個請求將針對特定的數據源(API)。所有這些請求都會更新相同的元素(該元素可能是JSON元素,甚至是html標籤)。通過這樣做,您可以將數據顯示爲先到先顯示,並且還可以進行排序和其他操作 –

+0

我不應該直接從提供者向客戶端發送數據。我必須處理數據,然後將其發送給客戶端,並且提供商的數量是動態的。讓我的問題更簡單我說我有3個提供者。但在實際工作中,我們的系統會運行一系列動態的任務來搜索酒店,我們正在做的是像booking.com – mhdbaz

相關問題