gpt4 book ai didi

c# - ADO.Net 中的异步编程

转载 作者:太空狗 更新时间:2023-10-29 22:26:35 24 4
gpt4 key购买 nike

以下链接http://msdn.microsoft.com/en-us/library/hh211418(v=vs.110).aspx解释了 4.5 .Net 框架的新异步编程功能,其中大部分是相当直接的阅读。

不过,我只是想确定一件事....

如果我在 web 服务 中使用 SQLDataReader 并且我在客户端上创建了一个服务引用以通过在代理中生成异步方法(通过服务引用对话框选项)来使用该 web 服务,我很清楚我不会需要使用上面链接中提到的方法。

相反,我会在调用该 Web 服务方法时在客户端适本地使用async、Task 和 await 关键字

由于在 Web 服务对话框中选中了这些选项,它将自动为 ADO.Net 调用创建异步方法调用。

因此,如果您在 Web 服务中有一个名为 GetCategories 的方法,它将自动在 Web 服务中创建一个名为 GetCategoriesAsync 的异步调用,可以从客户。同样,无需将异步属性放在网络服务方法调用上;仅适用于使用网络服务或使用网络服务但检查异步选项的 ADO.Net 调用。

我的想法正确吗?

最佳答案

这取决于你想让什么异步。

网络通信本质上是异步的。当 Visual Studio 为您的 Web 服务创建客户端代理时,它会同时创建异步和同步方法(其中同步方法只是阻止等待响应)。因此,您的 Web 客户端可以是异步的,无论服务器如何实现都是如此。换句话说,服务器可以是同步的也可以是异步的,客户端可以是同步的也可以是异步的,彼此完全独立。

在客户端,您几乎应该总是在代理上使用异步方法。对客户的主要好处是响应能力。

在服务器端,您可以通过使用异步实现获得可扩展性优势。但是,如果您的后端是单个 SQL 服务器数据库,并且每个请求都会访问该数据库,那么使您的 Web 服务异步通常不会带来任何好处。这是因为(在那种情况下)可伸缩性瓶颈是 SQL 服务器,而不是 Web 服务器。 OTOH,如果您的后端是 SQL 服务器 集群 或 Azure SQL,那么您可以通过使用异步 Web 服务实现来获得可扩展性优势。

旧式常见场景是 client <-> API <-> DB ,并且在该架构中有 no real need for asynchronous DB access .然而,越来越多的架构看起来像client <-> API <-> cloud storage / APIs。 , 那就是 async 的时候确实给 API 层带来了好处。

关于c# - ADO.Net 中的异步编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267580/

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