首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在N层应用程序UI到DB访问层中使用异步等待(C#)的有效方法是什么?

在N层应用程序UI到DB访问层中使用异步等待(C#)的有效方法是什么?
EN

Stack Overflow用户
提问于 2018-08-27 07:25:41
回答 2查看 194关注 0票数 1

考虑一个具有UI(Controller)、业务层和DataAccess层的Web应用程序.

假设要获得一个员工列表,一个调用会贯穿所有三个层,如果我们将它变成一个异步调用,是否这三个层中的所有方法都在一个调用流中,我们是否应该异步使它成为一个高效的异步调用?

EN

回答 2

Stack Overflow用户

发布于 2018-08-27 07:46:48

从调用异步的第一个方法到实际需要执行异步操作的最后一个方法,整个链都需要异步。

因此,在您的示例中,异步操作最有可能位于数据访问层。DAL将从业务层被调用。而BL将从您的UI控制器中调用,因此它们都需要是异步的。

没有理由使方法任意异步,很可能您将有不调用任何其他异步方法的方法,因此它们本身不需要是异步的。

另一种情况是,如果您只是返回一个任务,而没有等待任何东西,则不应该有一个异步的方法。

票数 3
EN

Stack Overflow用户

发布于 2018-08-27 08:40:26

总之,,异步一路!特别是不要使用阻塞代码!阻塞代码(与异步代码混合)可能会在运行时引起各种问题(例如死锁、异常困难等)。看这个MSDN杂志文章

详细地说,只有需要await的方法(即等待完成、检查是否取消、检查是否出错、检索结果)才应该是async。方法,它只是返回一个TaskTask而没有观察到它的Status,为了避免开销,不应该是异步的。但最终,您必须至少在顶层代码(例如UI)中等待,才能检索结果和/或观察任务是否已成功运行完成。

而且,按照惯例,您应该始终将“异步”附加到异步和/或任务返回方法的名称中。另见文档堆栈溢出

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52034483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档