我正在我的 ASP.NET 解决方案中构建一个页面,该页面从第 3 方 API 服务检索其大部分数据。
页面本身将需要对 API 进行大约 5 次不同的调用以填充其所有控件,因为对 API 的每个 Web 请求都会返回不同的数据集。
我想同时处理我在新线程上发出的每个单独的 Web 请求,以便减少加载时间。
我发出的每个请求看起来像这样:-
WebRequest request = WebRequest.Create(requestUrl);
string response = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd();
return new JsonSerializer().Deserialize<OccupationSearch>(new JsonTextReader(new StringReader(response)));
首先,我应该尝试这个吗?即,它安全吗?并且它会通过多线程处理来提高性能吗?
其次,执行此操作的最佳方法是什么?多线程系统有许多不同的方法,但哪种方法最适合这项任务?
最佳答案
多线程是正确的选择,但我会称之为异步处理。
无论如何,您应该知道多线程在 IIS 中的工作方式不同。
IIS 工作进程会在所有子线程结束后完成一个请求,这是一个大问题,因为您不希望长时间占用一个工作进程,而是将其重新用于其他请求。其实就是一个线程池。
这就是 ASP.NET 提供自己的方法来实现异步的原因,如果您使用正确的方法,IIS 将能够一次处理更多请求,因为异步工作将在 IIS 进程模型之外执行。
我建议您阅读有关 ASP.NET 异步的更多信息:
http://www.hanselman.com/blog/TheMagicOfUsingAsynchronousMethodsInASPNET45PlusAnImportantGotcha.aspx
结论:使用异步工作,这将更有效地利用服务器资源,但首先要了解更多关于如何以正确的方式做到这一点!
关于c# - ASP.NET 多线程 Web 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23912456/