2013-05-02 36 views
2

我試圖擴展WebAPI以支持通過HTTP回調返回響應。如何擴展WebAPI以支持通過HTTP回調返回控制器操作結果?

工作流程:

  1. 的WebAPI接收與回調URL一個HTTP請求。
  2. WebAPI正常處理URL,如果操作完成時間少於配置的超時時間,則結果將同步發送。
  3. 如果超時超時,服務器需要發送一個HTTP響應,指示它進入異步狀態,處理繼續。
  4. 處理(最終)完成時,控制器的響應會發布到預協商的回調URL。

控制器需要保持同步並且不知道異步/回調功能。

似乎MessageHandlers是可能的候選人,但返回多個HTTP響應(一個用於早期的'長任務'響應和一個用於回調)似乎不受支持。

有人可以提供有關WebAPI的哪些區域可擴展且與此場景相關的指導嗎?

+0

這個邏輯可能不是這份工作的最佳解決方案。我認爲你可以將潛在的長/昂貴的工作分成基於隊列的進程。並最終用預定的後臺任務管理這個隊列。因此,採用這種方法,您可以通過「將新任務添加到隊列」來簡化api操作:) – Orhaan 2013-05-02 21:13:17

回答

0

我認爲一個HttpMessageHandler會做的伎倆,但不是我認爲你要求的方式。

一個URL將是主要URL,將返回結果或重定向,另一個將處理重定向。

這是一種非常常見的情況。在某些情況下,您會要求列出某些內容,並收到一定數量的管理結果,如果還有更多內容,則會顯示延續網址。您的要求可能會被視爲只是您或者只有延續或整個結果。

將其視爲CQRS(命令查詢責任分離)的另一種方法。您在網址上發出命令並從其他網站獲取響應。作爲優化,調用該命令的結果可能是響應而不是查詢URL。

這對你有幫助嗎?

相關問題