在方法中调用多个服务.如何有效地做到这一点
本文关键字:有效地 这一点 服务 方法 调用 | 更新日期: 2023-09-27 18:26:30
我有一个显示10000个产品的asp.net网页(MVC)。
为此,我正在使用一种方法。在这种方法中,我必须调用外部web服务20次。这是因为web服务一次给我500个数据,所以要获得10000个数据,我需要调用该服务20次。
20次调用使页面加载速度变慢。现在我需要提高性能。由于web服务是外部的,我无法在那里进行更改。
线程是我想到的一个选项。由于我可以使用页码(服务是为数据分页),所以每个服务调用几乎是独立的。
另一种选择是使用并行linq。
我应该使用并行linq,还是选择线程?
有人请引导我到这里来。或者让我知道实现这一目标的另一种方法。
注意:此网页一次可供多个用户使用。
我们在页面左侧有过滤器。因此,我们需要所有10000个数据来构建过滤器。否则,页面信息可能已经足够了。由于服务器上的巨大过载,缓存是不可能的。一次400-1000个用户可以访问服务器。网络服务的响应时间是10秒,所以我们可以多次访问他们的
我们必须点击该服务20次才能获取所有数据。现在我需要一个解决方案来提高命中率。线程是唯一的选择吗?
如果你不能从服务中缓存数据,那么当你需要显示数据时,只需获取你需要的数据。我非常怀疑有人想在一个网页上看到所有10000种产品,如果他们这样做了,可能是出了问题!
线程,并行linq在这里对您没有帮助。
Parallel Linq是指在CPU核心上共享大量CPU工作,您想做的是同时发出20个web请求。您需要使用线程来完成此操作。
您可能想要使用HttpWebRequest的内置异步功能(请参阅BeginGetResponse)。
考虑异步调用该服务。调用Web服务的大部分延迟是由可以同时执行的IO操作引起的。
但每次请求获得10000个项目是非常罕见的:)