我有MVC应用程序(也适用于非MVC),用户在数据中发布。我需要获取这些数据,将其发送到两个单独的端点(一个使用WebRequest表单POST,一个使用Web服务),解析结果,然后将结果发送回原始用户。
手头的问题是两个端点响应大约需要20-30秒(响应是一个字符串),这意味着我应该异步执行这两个调用。同时我想等待回复原始用户,直到我得到两个结果。我猜我可能不得不使用某种对象锁定,所以在两个调用完成之前响应不会被发回?
我是在正确的道路上吗?有没有人有关于如何实现这一目标的任何信息?任何帮助表示赞赏。
由于
修改
基于响应,我决定使用异步控制器,因为我已经在使用MVC应用程序了。感谢您的投入。
答案 0 :(得分:1)
您可以在两个异步线程上调用Join来等待它们的返回。您还需要研究异步控制器。这在MVC2中可用,但您也可以查看我认为实现异步操作的MVC1功能。您需要这样做,因此您不会阻止IIS处理更多线程。
答案 1 :(得分:0)
我认为您会发现这有用:Rx: Piecing together multiple IObservable web requests
特别是,使用ForkJoin等待评论中提到的两个响应都回来了:
同样是奖金问题,有一种情况我想同时执行网络电话 当完成所有操作后,执行另一个observable,直到其他调用完成。
使用Observable.ForkJoin执行 同时进行多个异步调用 然后将所有结果加入到 一个IObservable。然后用 SelectMany(声明中的另一个) 就像上面一样,订阅 另一个基于联合的观察 结果