我有以下情形:ASP.Net多线程Web服务调用
我们有一个ASP.Net网站,它生成一个PDF报告。要生成PDF报告,我们需要进行多个Web服务调用(每个调用都会返回一部分数据)。大部分调用都是针对同一个端点,但方法和参数是不同的。为了提高性能,我们已经想到了以下2种方法之一:
- 揭露接受所有各个呼叫参数Web服务操作。在内部,该方法逐一调用每个方法;完成后,它会将所有回复打包到收藏夹中并将其发回。然后,ASP.Net网页接收到响应列表并将其解压缩并生成报告。
- 从ASP.Net应用程序并行调用Web服务方法。完成所有并行呼叫后,收集所有响应并生成PDF。
起初,第二种方法看起来优雅;问题是,我们如何进行并行Web服务调用。 Thread.QueueUserWorkItem是不是一个好的选择,因为这里建议: Using ThreadPool.QueueUserWorkItem in ASP.NET in a high traffic scenario和 http://williablog.net/williablog/category/Scalability.aspx
创建使用新主题(新线),也没有伟大的,因为这里建议: http://blogs.msdn.com/b/tmarq/archive/2010/04/14/performing-asynchronous-work-or-tasks-in-asp-net-applications.aspx
此外,Web应用程序代码分层的UI和调用Web服务方法的业务逻辑层。该网站不是一个非常沉重的网站,约有200个并发用户。
请求帮助提高pdf生成过程的性能。
感谢和问候
维卡斯
据我所知,生成的webservice客户端类生成web服务调用的异步版本。您是否尝试过使用这些代替多线程的方式? –