目前,数据层与数据库异步交互是很常见的:
public async TaskGetCustomer(int id) { using (db = new AppDbContext()) { return await db.Customers.FindAsync(id); } }
有了这种技术,我的理解是所有调用方法,一直到UI层,然后也必须使用async关键字定义.因此,您最终会得到一个应用程序,其中最终与DB交互的每个方法或函数都是异步方法.
这看起来非常混乱,并且在了解数据层内部的实现细节的情况下"污染"所有应用程序层.
我误解了什么,或者这只是一个人必须做的事情?
我误解了什么,或者这只是一个人必须做的事情?
不,你说得对.这只是你必须要做的事情.
这看起来非常混乱,并且在了解数据层内部的实现细节的情况下"污染"所有应用程序层.
是的,那些实施细节确实泄漏了,这是不幸的.这只是绝大多数计算机语言如何运作的现实.
我倾向于将async
细节与IDisposable
细节进行比较.如果一个类实现IDisposable
,那么它包含(拥有)类应该等等.但是一个类是否拥有资源应该是一个实现细节.