4 .net c# asp.net asp.net-mvc asp.net-web-api
我有一个现有的业务库,我想使用Web API公开它.我现有的业务类看起来像
public class Business
{
public bool DoSomeBusiness()
{
//Performing long running DB operations
return true;
}
//Other methods
}
Run Code Online (Sandbox Code Playgroud)
我正在编写一个Web API方法,如下面的代码和使用asyn/await以获得更好的可伸缩性.
public class SampleController : ApiController
{
Business _business;
public ValuesController(Business business)
{
_business = business;
}
public async Task<HttpResponseMessage> Get()
{
var result= await Task.Run(() => _business.DoSomeBusiness());
return Request.CreateResponse(HttpStatusCode.OK, result);
}
}
Run Code Online (Sandbox Code Playgroud)
这种方法是否正确?我是否会获得异步行为的真正好处?我不想更改现有的业务层实现,以使它们基于任务.
这没有任何结果.如果是这样,ASP.NET可以自动在Task.Run调用中运行您的操作,并实现更好的可伸缩性.
你不能欺骗这个.您需要一直使用async到您正在制作的IO.这会感染一切,这就是为什么在需要时而不是默认情况下应该这样做的原因.
我会链接你关于做出这个选择的两个基本帖子,因为现在你不了解这个主题足以做出选择:
/sf/answers/1756109141/为什么EF 6教程使用异步调用? /sf/answers/895769801/默认情况下我们应该切换到使用异步I/O吗?
| 归档时间: |
|
| 查看次数: |
3394 次 |
| 最近记录: |