【发布时间】:2019-11-07 08:05:25
【问题描述】:
在 .net 核心网络应用程序中,我想将 new DatabaseReader 作为单例注入。因此我在我的 Startup-Class 中使用 AddSingelton。
services.AddSingleton(x => new DatabaseReader(pathToFile));
你认为重用DatabaseReader是个好主意吗?
谢谢
【问题讨论】:
在 .net 核心网络应用程序中,我想将 new DatabaseReader 作为单例注入。因此我在我的 Startup-Class 中使用 AddSingelton。
services.AddSingleton(x => new DatabaseReader(pathToFile));
你认为重用DatabaseReader是个好主意吗?
谢谢
【问题讨论】:
单个连接是个坏主意 - 如果对连接的访问被正确锁定,则意味着网站/应用程序一次只能为一个用户提供服务。
这意味着您的应用程序可扩展性极其有限,无法获得大量用户。
还有一个问题是你的连接没有很好地锁定,事情会变得很奇怪。
例如,一个线程可能会在另一个线程尝试对其执行命令时释放连接。
更好的方法是在需要时通过创建一个新的连接对象来使用连接池。所以你可以同时处理很多请求,你的限制应该是数据库。
【讨论】:
是的,您应该在并发请求之间重复使用 DatabaseReader。读取器是线程安全的,并且不依赖锁来保证线程安全。
【讨论】: