我应该使用异步处理吗?

时间:2012-12-10 22:03:45

标签: c# service asynchronous web

我有一个Windows服务,用于监视行(带有计时器)的行,在它们出现时一次抓取一行,将信息提交给RESTful Web服务,分析响应,并写一些关于行的详细信息对表的回应。通过使这个异步,我可以获得任何吗?我当前(精简的)Web服务提交代码如下:

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
HttpWebResponse resp;
try
{
      resp = (HttpWebResponse)req.GetResponse();
}
catch (WebException we)
{
      resp = (HttpWebResponse)we.Response;
}

if (resp != null)
{
      Stream respStream = resp.GetResponseStream();
      if (respStream != null)
      {
           responseBody = new StreamReader(respStream).ReadToEnd();
      }

      resp.Close();
      respStream.Close();
}

return responseBody;

2 个答案:

答案 0 :(得分:0)

通过使用异步方法,您可以避免在异步操作的结果上使用专用线程阻塞。您可以释放该线程以处理其他更高效的任务,直到异步任务完成并再次进行高效工作。

如果您的服务需求不高,并且经常处于需要执行更多工作的位置而不是执行此操作,则您无需担心。对于许多商业应用程序,它们的使用率非常低,因此不需要这样做。

如果您有一个大型应用程序为足够多的用户提供服务,那么您有大量的并发请求(即使它只是在高峰使用时间),那么它可能会切换到异步对应项。

答案 1 :(得分:0)

如果您不关心为任何单个请求获取响应所需的时间,不,没有特别的理由让它异步。

另一方面,如果您在开始下一个请求之前等待一个请求完全完成,则可能无法处理大量卷。在这种情况下,您可能希望查看并行化代码。但是,如果您将大量项目输入数据库进行处理,那么这是值得讨论的。

相关问题