数据层中的静态变量,通过 Web 服务

本文关键字:通过 Web 服务 变量 静态 数据 | 更新日期: 2023-09-27 18:30:34

我被要求接管一个应用程序,该应用程序在 1-2 个用户测试下运行良好,但一旦我们对其进行了更大的测试,它就开始崩溃了。我们看到随机超时,以及有关代码无法找到它期望绑定到的某些列的消息,尽管它只有 1-2 个用户在工作。

应用程序的结构为:

--------------
| WebSite    |
--------------
| WebService |
--------------
| Database   |
--------------

该网站通过网络服务与数据库进行所有通信。浏览 Web 服务代码,我看到它正在使用一个类来完成数据库工作,并将其声明为类级变量:

private static SqlConnection cn;

然后,这被用于页面上需要连接的所有方法中。作为静态的,这意味着所有用户只有一个实例,对吗?我只是想确认我正确看到了它,因为我们删除了它并正在测试它。对我来说,看到这一行意味着连接对象的 1 个实例在所有用户之间共享,这可以解释为什么 1-2 个用户可以,但用户数量越多,排队等待它的人就越多,最终导致随机错误。只是想确认我理解正确。

谢谢。

数据层中的静态变量,通过 Web 服务

是的,该静态变量将跨用户访问。问题的真正根源是缺乏线程安全性,不一定是共享连接对象。