我编写了一个与 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/