异步方式调用webapi服务

时间:2016-04-19 15:10:21

标签: .net asp.net-mvc asynchronous asp.net-web-api task-parallel-library

我们需要从MVC Web应用程序调用{​​{1}}。

呼叫需要以webapi service (via REST)方式进行,并且应该是一个火灾和忘记呼叫。在这种情况下,请您就最佳方法征求意见。

  1. 在任务并行库(TPL)中使用任务

  2. 使用MVC异步控制器。

  3. 请提供您对任何其他方法以及参考资料的想法。

2 个答案:

答案 0 :(得分:0)

首先,我建议使用OWIN Katana(https://katanaproject.codeplex.com/)作为REST API Web服务器。它本身支持引擎中的任务而不是线程。

关于异步Web方法,我建议使用async / await。但是,只有当您在一个Web方法中创建多个等待请求(第三方Web服务或对数据库的请求)时才使用它们。

答案 1 :(得分:0)

  

应该是一场火灾而忘记致电

你确定吗? 99%的时间,在ASP.NET上发射并忘记是一个错误。要明确,“即发即忘”意味着:

  1. 您无法通知来电者错误;和
  2. 可以中止webapi服务电话。
  3. 此外,即使永远不会获取你的任何东西。为什么你不是从客户端而不是从你的MVC层开始忘记?

    但是如果你真的坚持认为webapi调用必须,那么你可以follow one of the techniques on my blog,例如HostingEnvironment.QueueBackgroundWorkItem