我有一个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;
如果您不必同时做某件事情,并且由于用户不受影响,绝对不会。由于它是一项服务,另一个线程可以完成所需的任何其他活动。 – kenny
如果您可以详细说明几个细节,可能有助于得到更彻底的答案:在x时间内需要处理的典型记录数量是多少?你的程序流程是什么? (意思是,你是否拉一条记录,发出请求,等待响应,更新数据库,获取下一条记录,重复;或者你有其他流量吗?) –
除非你的Windows服务真的忙于做其他事情而且你不希望它等待响应,我并没有看到使这个异步的任何价值。另一方面,我应该指出WebResponse(因此HttpWebResponse),Stream和StreamReader都实现了IDisposable而应该配置。 – Pete