【发布时间】:2012-12-13 15:50:34
【问题描述】:
我有一个像这样的可移植类库 (PCL) 方法:
public async Task<string> GetLineStatuses()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
using (HttpWebResponse response = (HttpWebResponse)await request.GetResponseAsync())
{
return response.GetResponseStream().ReadAllText();
}
}
我的 ASP.NET Web Api 方法如下所示:
public async Task<HttpResponseMessage> Get()
{
HttpResponseMessage response = new HttpResponseMessage();
string statuses = await service.GetStatuses();
response.Content = new StringContent(statuses);
return response;
}
在 Web API 中返回任务的含义是什么。这是允许的吗?我想使用 await 的唯一原因是我可以使用可移植类库 (PCL)。最佳做法是什么?我应该有我的方法的同步版本和异步版本吗?对性能和代码可读性和可维护性有何影响?
如果我返回Task<string>而不是Task<HttpResponseMessage>,我也会有同样的效果吗?
【问题讨论】:
-
我相信 .Net 4.5 中的 ASP.NET 确实支持
async方法,因此您的代码应该可以正常工作。你为什么要问这是否允许?你没试过吗? -
我也想知道性能和代码可读性和可维护性的影响?
标签: c# .net asp.net-web-api task-parallel-library async-await