C# DataReaders,慢速客户端是否会导致连接数超过最大连接数

C# DataReaders,慢速客户端是否会导致连接数超过最大连接数,c#,asp.net,c#-4.0,ado.net,C#,Asp.net,C# 4.0,Ado.net,当使用DataReader时,在本例中是Response.Write,但我想它适用于任何控件,慢客户端是否会影响连接数?平均连接池通常最多有15个连接。因此,如果100个用户访问应用程序,其中50个用户的连接速度非常慢,延迟很高,那么连接数量是否会超过最大连接数量 如果使用DataTable,我会设想所有数据都加载到内存中,这样在执行Response.Write时连接就不会保持打开状态 例如: using(SqlDataReader reader = DataUtility.GetReader(

当使用DataReader时,在本例中是Response.Write,但我想它适用于任何控件,慢客户端是否会影响连接数?平均连接池通常最多有15个连接。因此,如果100个用户访问应用程序,其中50个用户的连接速度非常慢,延迟很高,那么连接数量是否会超过最大连接数量

如果使用DataTable,我会设想所有数据都加载到内存中,这样在执行Response.Write时连接就不会保持打开状态

例如:

using(SqlDataReader reader = DataUtility.GetReader("select * from employees"))
{
   while(reader.Read()) 
   {
      Response.Write(reader["emp_id"]).ToString();
      Response.Write(reader["username").ToString();
   }
}
vs


我们无法用给出的代码回答这个问题。连接数取决于在代码中打开和关闭连接的时间。如果在关闭连接之前等待将所有数据发送到客户端,则慢速连接会产生影响

大多数C代码不是这样写的。通常,您打开一个连接,做一些工作,然后关闭连接。然后执行附加处理并将响应发送到客户端


向我们显示更多代码,我希望您没有关闭连接,这会导致您的问题。

响应在服务器上缓冲,因此代码不会等待响应实际发送到客户端。慢速连接不会使服务器代码运行变慢


尽管如此,如果您首先从数据库获取所需的所有数据,然后关闭数据库连接并使用数据创建响应,那么服务器代码将更加高效。这样,您可以使用更少的数据库资源,在尽可能短的时间内打开数据库连接


旁注:我看到您在代码中使用select*,它从表中获取所有字段。您应该只指定实际使用的字段,以便从数据库中获取尽可能少的数据。

在查询中,从员工中选择*员工表中是否只有2个字段。。?如果没有,那么重构您的查询以返回emp_id&&username我不会像您这样做,我会去数据库,创建我的对象,关闭连接,然后响应客户端。您可以通过更改查询字符串在连接池中添加更多连接。是的,这只是一个示例,使用与响应相同的方法查看IDataReader代码。编写是痛苦的。你在这里没有分离的关注点。我将学习如何创建一个基本的DTO对象,使用IDataReader填充其中一个或一个集合,尽快关闭/处置IDataReader,然后将单个或Icollection的DTO对象推送到表示层。如果首先从数据库获取所需的所有数据,然后关闭数据库连接并使用数据创建响应Yes!不要错过这个重要的部分。尽快启动、使用/使用datareader,然后关闭/处置它们。将您的datareader转换为基本DTO将是一种尝试过的/真实的方法,可以尽可能快地实现这一点。
DataTable emps = DataUtility.GetDataTable("select * from employees");
foreach(DataRow row in emps.Rows)
{
      Response.Write(row["emp_id"]).ToString();
      Response.Write(row["username").ToString();
}