Maxmind 将新的 DatabaseReader 作为单例注入,以避免一次又一次地重新访问文件

Maxmind Injecting new DatabaseReader as a singletone to avoid re-accessing the file again and again

在 .net 核心网络应用程序中,我想将 new DatabaseReader 作为单例注入。因此我在我的 Startup-Class.

中使用了 AddSingelton
services.AddSingleton(x => new DatabaseReader(pathToFile));

您认为重用 DatabaseReader 是个好主意吗?
谢谢

单个连接不是一个好主意 - 如果正确锁定对连接的访问​​,则意味着网站/应用程序一次只能为一个用户提供服务。

这意味着您的应用程序可扩展性受到极大限制,无法获得大量用户。

当你的连接没有很好地锁定时也会出现问题,事情会变得很奇怪。

例如,一个线程可能会释放连接,而另一个线程正试图针对它执行命令。

更好的可能性是在需要时通过创建新的连接对象来使用连接池。所以你可以同时处理很多请求,你的限制应该是数据库。

是的,您应该在并发请求中重复使用 DatabaseReader。 reader 是线程安全的,不依赖锁来确保线程安全。