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 是线程安全的,不依赖锁来确保线程安全。
在 .net 核心网络应用程序中,我想将 new DatabaseReader
作为单例注入。因此我在我的 Startup-Class.
services.AddSingleton(x => new DatabaseReader(pathToFile));
您认为重用 DatabaseReader
是个好主意吗?
谢谢
单个连接不是一个好主意 - 如果正确锁定对连接的访问,则意味着网站/应用程序一次只能为一个用户提供服务。
这意味着您的应用程序可扩展性受到极大限制,无法获得大量用户。
当你的连接没有很好地锁定时也会出现问题,事情会变得很奇怪。
例如,一个线程可能会释放连接,而另一个线程正试图针对它执行命令。
更好的可能性是在需要时通过创建新的连接对象来使用连接池。所以你可以同时处理很多请求,你的限制应该是数据库。
是的,您应该在并发请求中重复使用 DatabaseReader
。 reader 是线程安全的,不依赖锁来确保线程安全。