Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 能否与ASP.NET Core异步使用System.Data.Odbc?_C#_Asp.net Core_Odbc - Fatal编程技术网

C# 能否与ASP.NET Core异步使用System.Data.Odbc?

C# 能否与ASP.NET Core异步使用System.Data.Odbc?,c#,asp.net-core,odbc,C#,Asp.net Core,Odbc,对于我正在使用的应用程序,我被迫使用ODBC连接来访问数据库。我遇到的一个问题是,我不确定如何或者甚至是否可以异步使用它。如果这真的不可能,有人知道可能的解决方法吗?多任务和Web服务器是一对奇怪的组合 一方面,Web服务器自动执行大量多线程处理(通常每个连接一个线程)。并行的多个请求令人愉快地并行 另一方面,您不应该在服务器端使用多任务处理。从头开始构建,根据请求填充,处理,渲染并尽快从内存中删除。您可能会将该页在内存中保留太长时间,或者在该页及其所有相关内容被删除之前,您永远不会得到结果 如

对于我正在使用的应用程序,我被迫使用ODBC连接来访问数据库。我遇到的一个问题是,我不确定如何或者甚至是否可以异步使用它。如果这真的不可能,有人知道可能的解决方法吗?

多任务和Web服务器是一对奇怪的组合


一方面,Web服务器自动执行大量多线程处理(通常每个连接一个线程)。并行的多个请求令人愉快地并行

另一方面,您不应该在服务器端使用多任务处理。从头开始构建,根据请求填充,处理,渲染并尽快从内存中删除。您可能会将该页在内存中保留太长时间,或者在该页及其所有相关内容被删除之前,您永远不会得到结果


如果要进行多任务处理,则必须在客户端进行。通常使用一些JavaScript。特别是AJAX。客户机甚至可以为了这个目的与一个特殊的Web服务进行对话(因此Web服务器保持“真正的”免费)请求。

这不是真的,链接指向五年前的文档。也没有真正回答有关异步或ODBC@SamiKuhmonenASP.Net页面生命周期是否发生了变化?因为我在原始PHP中也看到了相同的模式。它还通过指出起点错误来回答问题。在服务器。您只需要让客户端自己做。在需要时,您肯定会在服务器上做异步。异步始终是一件大事,特别是在这里,因为服务器可以在等待时释放线程来服务其他请求。当然,这要求任务不受cpu限制。客户端如何对数据库执行异步请求?它不能。“通常每个连接一个线程-自动。"-哇。抱歉,但不是。这是错误的,也是非常糟糕的建议。每个连接的一个线程不能扩展到几百个并发连接之外-所有高性能或可扩展的web应用程序都必须使用非阻塞IO。在现代应用程序中,这意味着使用
async/await
,但在此之前,我们必须使用重叠IOWin32上的IO和Linux上的epoll/
选择
,这种做法可以追溯到几十年前。(每个线程至少耗资数百KB,在20世纪90年代后期,当您只有64MB RAM可供使用时,尝试这样做)。使用Dapper: