c# - 为什么需要对我的数据库进行异步调用?

标签 c# .net sql-server asynchronous

我编写了一个与 MSSQL 数据库交互的服务器。它目前是用 .NET 4.0 编写的,并使用 NHibernate 作为 ORM 从数据库中检索信息。在阅读有关 .NET 4.5 和 async/await 关键字的介绍时,我了解到,不幸的是,NHibernate does not have support for async/await .

我不明白为什么对数据库发出异步调用会有好处。不是所有的请求都在数据库级别排队吗?异步不会只会增加故障点而不会改进任何东西吗?

最佳答案

一般来说,好处是您不会在运行可能昂贵的(异步)操作时阻塞当前正在执行的线程。在 WPF/Windows 窗体应用程序的上下文中,这意味着您不会阻塞 UI 线程(如果请求源自该线程)并且您的应用程序保持响应。

在 Web 应用程序(例如 IIS)的上下文中,这意味着您在等待结果时释放池中的线程。由于您没有锁定线程,因此可以重复使用它来接受另一个请求,并在接受的连接(不一定是时间/请求)方面产生更好的性能。

关于c# - 为什么需要对我的数据库进行异步调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22307497/

相关文章:

c# - .Net Framework 中的字符串实习 - 有什么好处以及何时使用实习

c# - MySql 数据库中的 Entity Framework 代码优先迁移

c# - 调用一个 Action - 确定它所属的实例是否为空

.net - 将 PDF 与 PDFSharp 丢失表单字段相结合

c# - TransformBlock 永远不会完成

c# - 为什么我应该将我已经加密的密码转换为其 Base64 字符串表示形式?

sql - 有没有办法在选择查询中动态生成 SQL 列?

c# - decimal.Parse 无法在 visual studio 2012 中使用

c# - 将大量行写入文本文件的有效方法

c# - ssis vsta 脚本组件在编辑 VS2015 时打开速度慢