如果您在架构中的较低级别使用 async/await,是否有必要将 async/await 调用一直“冒泡”,是否效率低下,因为您基本上是为每一层创建一个新线程(异步调用每一层都有一个异步函数,或者它并不重要,只是取决于你的偏好?
我正在使用 EF 6.0-alpha3,以便我可以在 EF 中使用异步方法。
我的存储库是这样的:
public class EntityRepository<E> : IRepository<E> where E : class
{
public async virtual Task Save()
{
await context.SaveChangesAsync();
}
}
现在我的业务层是这样的:
public abstract class ApplicationBCBase<E> : IEntityBC<E>
{
public async virtual Task Save()
{
await repository.Save();
}
}
当然,我在 UI 中的方法在调用时也会遵循相同的模式。
这是:
- 必要的
- 对业绩不利
- 只是偏好问题
即使这没有在单独的层/项目中使用,如果我在同一个类中调用嵌套方法,同样的问题也适用:
private async Task<string> Dosomething1()
{
//other stuff
...
return await Dosomething2();
}
private async Task<string> Dosomething2()
{
//other stuff
...
return await Dosomething3();
}
private async Task<string> Dosomething3()
{
//other stuff
...
return await Task.Run(() => "");
}