我正在ASP.NET解决方案中构建一个页面,该页面从第三方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
结束语:使用异步工作,这将更有效地利用服务器资源,但首先请详细了解如何以正确的方式进行操作!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句