【发布时间】:2017-06-16 23:50:06
【问题描述】:
我正在编写一个 WebAPI 微服务,我想知道使用 async 是否有好处。该服务通过实体框架对 SQL 数据库进行一些调用。
同步:
using(var db = new Entities())
{
var user = db.Users.FirstOrDefault();
user.IsActive = false;
db.SaveChanges();
}
异步:
using(var db = new Entities())
{
var user = await db.Users.FirstOrDefaultAsync();
user.IsActive = false;
await db.SaveChangesAsync();
}
与我见过的async 的一些用例不同,在启动等待子任务和来自await 的暂停之间没有进行任何处理(因此“单线程”,尽管可能不是字面意思) .
我的问题是,从资源的角度来看,这与同步替代方案有何不同?假设它通过控制器一直是异步的,服务的扩展性会更好吗?
奖励积分:在其他异步应用程序中执行一些同步阻塞有什么影响(例如,如果开发人员忘记使用异步方法)?
【问题讨论】:
-
“异步”是什么意思?
-
返回任务而不是结果。 “一直通过控制器”意味着永远不会使用 .Result 或 .Wait() 调用任务
标签: entity-framework asp.net-web-api async-await