当前位置:  开发笔记 > 编程语言 > 正文

数据层中的异步是否要求整个调用堆栈也是异步的?

如何解决《数据层中的异步是否要求整个调用堆栈也是异步的?》经验,为你挑选了1个好方法。

目前,数据层与数据库异步交互是很常见的:

public async Task GetCustomer(int id)
{
  using (db = new AppDbContext())
  {
    return await db.Customers.FindAsync(id);
  }
}

有了这种技术,我的理解是所有调用方法,一直到UI层,然后也必须使用async关键字定义.因此,您最终会得到一个应用程序,其中最终与DB交互的每个方法或函数都是异步方法.

这看起来非常混乱,并且在了解数据层内部的实现细节的情况下"污染"所有应用程序层.

我误解了什么,或者这只是一个人必须做的事情?



1> Stephen Clea..:

我误解了什么,或者这只是一个人必须做的事情?

不,你说得对.这只是你必须要做的事情.

这看起来非常混乱,并且在了解数据层内部的实现细节的情况下"污染"所有应用程序层.

是的,那些实施细节确实泄漏了,这是不幸的.这只是绝大多数计算机语言如何运作的现实.

我倾向于将async细节与IDisposable细节进行比较.如果一个类实现IDisposable,那么它包含(拥有)类应该等等.但是一个类是否拥有资源应该是一个实现细节.

推荐阅读
ifx0448363
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有