WebRequest和Web服务在C#中调用异步

时间:2010-09-20 22:49:18

标签: asp.net asp.net-mvc web-services asp.net-mvc-2

我有MVC应用程序(也适用于非MVC),用户在数据中发布。我需要获取这些数据,将其发送到两个单独的端点(一个使用WebRequest表单POST,一个使用Web服务),解析结果,然后将结果发送回原始用户。

手头的问题是两个端点响应大约需要20-30秒(响应是一个字符串),这意味着我应该异步执行这两个调用。同时我想等待回复原始用户,直到我得到两个结果。我猜我可能不得不使用某种对象锁定,所以在两个调用完成之前响应不会被发回?

我是在正确的道路上吗?有没有人有关于如何实现这一目标的任何信息?任何帮助表示赞赏。

由于

修改

基于响应,我决定使用异步控制器,因为我已经在使用MVC应用程序了。感谢您的投入。

2 个答案:

答案 0 :(得分:1)

您可以在两个异步线程上调用Join来等待它们的返回。您还需要研究异步控制器。这在MVC2中可用,但您也可以查看我认为实现异步操作的MVC1功能。您需要这样做,因此您不会阻止IIS处理更多线程。

答案 1 :(得分:0)

我认为您会发现这有用:Rx: Piecing together multiple IObservable web requests

特别是,使用ForkJoin等待评论中提到的两个响应都回来了:

  
    

同样是奖金问题,有一种情况我想同时执行网络电话     当完成所有操作后,执行另一个observable,直到其他调用完成。

  
     

使用Observable.ForkJoin执行   同时进行多个异步调用   然后将所有结果加入到   一个IObservable。然后用   SelectMany(声明中的另一个)   就像上面一样,订阅   另一个基于联合的观察   结果