2010-09-20 116 views
1

我有MVC应用程序(也适用于非MVC)用户在数据中发布的位置。我需要将这些数据发送给两个独立的端点(一个使用WebRequest表单POST和一个使用Web服务),解析结果并将结果发送回原始用户。在C#中异步调用WebRequest和WebService

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

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

感谢

编辑

基于我决定去与异步控制器,因为我已经有一个MVC应用程序工作的响应。谢谢您的意见。

回答

1

您可以在两个异步线程上调用Join以等待它们的返回。你也想看看异步控制器。这在MVC2中是可用的,但您也可以看看我认为用于实现异步操作的MVC1功能。你会想这样做,所以你不会阻止IIS处理更多的线程。

0

我想你会有所帮助:Rx: Piecing together multiple IObservable web requests

特别是,使用ForkJoin等到两种反应回来在评论中提到:

而且奖金问题,有一个我想要同时执行网络电话的情况 并且当所有完成时执行另一个可观察的事件,直到其他呼叫完成。

使用Observable.ForkJoin执行同时 多个异步调用 再加入所有的结果为 单一的IObservable。然后使用 SelectMany(另一个声明) 就像上面一样,根据加入的 结果订阅 另一个观察值。