1

我有一个 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;
4

2 回答 2

0

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

如果您的服务需求不高,并且不经常处于需要做的工作比线程多的位置,那么您不必担心。对于许多商业应用程序来说,它们的使用率非常低,以至于不需要这样做。

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

于 2012-12-10T22:11:56.037 回答
0

如果您不在乎获得对任何单个请求的响应需要多长时间,不,没有特别的理由使其异步。

On the other hand, if you're waiting for one request to fully finish before you start your next request you might have trouble handling a large volume. In this scenario you might want to look at parallelizing your code. But that's only worth discussing if you get large numbers of items entered into the database for processing.

于 2012-12-10T22:12:37.030 回答