gpt4 book ai didi

c# - 数据层的异步是否要求整个调用栈也是异步的?

转载 作者:太空狗 更新时间:2023-10-30 00:49:00 26 4
gpt4 key购买 nike

如今,数据层与数据库异步交互很常见:

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

根据我的理解,通过这种技术,所有调用方法,一直到 UI 层,都必须使用 async 关键字进行定义。因此,您最终会得到一个应用程序,其中最终与数据库交互的每个方法或函数都是异步方法。

这看起来非常困惑,并且“污染”了所有应用层,并了解数据层内部的实现细节。

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

最佳答案

Am I misunderstanding something or is this simply what one has to do?

不,你是对的。这只是您必须做的事情。

This seems terribly messy and "pollutes" all the application layers with knowledge of an implementation detail inside the data layer.

是的,这些实现细节确实泄露了,这很不幸。这就是绝大多数计算机语言如何工作的现实。

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

关于c# - 数据层的异步是否要求整个调用栈也是异步的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41816016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com