我如何扩展WebAPI以支持通过HTTP回调返回控制器操作结果?

时间:2013-05-02 17:50:25

标签: c# asp.net-mvc asynchronous asp.net-web-api

我正在尝试扩展WebAPI以支持通过HTTP回调返回响应。

工作流:

  1. WebAPI收到带有回调URL的HTTP请求。
  2. WebAPI正常处理URL,如果操作在比配置的超时时间短的时间内完成,则结果将同步发送。
  3. 如果超时超时,服务器需要发送HTTP响应,表明它已异步,处理继续。
  4. 处理(最终)完成后,控制器的响应将发布到预先协商的回调网址。
  5. 控制器需要保持同步并且不知道异步/回调功能。

    看起来MessageHandlers可能是候选者,但是返回多个HTTP响应(一个用于早期“长任务”响应,一个用于回调)似乎不受支持。

    有人可以提供有关WebAPI哪些领域可扩展且与此方案相关的指导?

1 个答案:

答案 0 :(得分:0)

我认为HttpMessageHandler会采用这种方法,但不是我认为你要求的方式。

一个URL将是主要的,将返回结果或重定向,另一个将处理重定向。

这是一种非常常见的情况。在某些情况下,您会要求提供某些内容列表,并获得一定数量的结果,如果有更多内容,则会收到续订网址。您的要求可能被视为只是您要么只有延续还是整个结果。

将其视为CQRS(命令查询责任隔离)的另一种方式。您向URL发出命令并从另一个检索响应。作为优化,调用命令的结果可能是响应而不是查询URL。

这对你有帮助吗?