【问题标题】:Maxmind Injecting new DatabaseReader as a singletone to avoid re-accessing the file again and againMaxmind 将新的 DatabaseReader 作为单调注入,以避免一次又一次地重新访问文件
【发布时间】:2019-11-07 08:05:25
【问题描述】:

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

services.AddSingleton(x => new DatabaseReader(pathToFile));

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

【问题讨论】:

    标签: .net-core maxmind


    【解决方案1】:

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

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

    还有一个问题是你的连接没有很好地锁定,事情会变得很奇怪。

    例如,一个线程可能会在另一个线程尝试对其执行命令时释放连接。

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

    【讨论】:

      【解决方案2】:

      是的,您应该在并发请求之间重复使用 DatabaseReader。读取器是线程安全的,并且不依赖锁来保证线程安全。

      【讨论】:

        猜你喜欢
        • 2023-03-18
        • 2016-08-09
        • 2015-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-20
        • 2021-07-18
        相关资源
        最近更新 更多