有一个现有的第三方Rest API可用,它将接受一组输入并返回相同的输出。 (认为它是必应的地理编码服务,它会接受地址和返回位置的详细信息)是否使用TPL或异步/等待
我的需求是多次调用此API(比如说500-1000)一个asp.net请求和每个调用可能需要接近500ms才能返回。
我可以想到如何做这个动作的三种方法。需要您的输入是最好的方法,以保持速度为准则。
1.一种在使用HTTP请求循环
编写一个简单的for循环和每个输入调用REST API和输出添加到结果。这到目前为止可能是最慢的。但是没有线程或上下文切换的开销。
2.使用异步和等待
使用异步和等待的机制来调用REST API。这可能是有效的,因为线程在等待REST调用返回时继续执行其他活动。我面临的问题是,根据我应该使用的建议,一直等待到最顶层的呼叫者,这在我的情况下是不可能的。不遵守它可能这里提到http://msdn.microsoft.com/en-us/magazine/jj991977.aspx
3.使用任务并行库
使用Parallel.ForEach并使用Synchronuos API来调用平行的服务器,并使用ConcurrentDictionary
导致asp.net死锁保持结果。但可能会导致线程开销
另外,让我知道是否有任何其他更好的方式来处理事情。我知道人们可能会建议跟踪每种方法的性能,但希望了解人们在之前如何解决此问题
为什么不让客户端发出多个请求并将它们转发到服务器,让客户端管理异步逻辑,因为JavaScript很好地处理异步逻辑,而不是在Http Request中收集结果并将其发送回客户端。 –
@AkashKava客户端通过单击按钮来完成条目。我需要调用服务api并将结果存储在每个条目的数据库中。要求JS做到这一点效率不高。 – Ramesh
@AkashKava另外,并行连接到控制是受限制的,因浏览器和版本而异 – Ramesh