Maxmind Внедрение нового DatabaseReader в качестве отдельного устройства, чтобы избежать повторного доступа к файлу снова и снова - PullRequest
0 голосов
/ 07 ноября 2019

В основном веб-приложении .net я хочу добавить new DatabaseReader как одиночный файл. Поэтому я использую AddSingelton в моем стартап-классе.

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

Как вы думаете, будет хорошей идеей повторно использовать DatabaseReader?
Спасибо

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Одно соединение - плохая идея - если доступ к соединению правильно заблокирован, это означает, что веб-сайт / приложение может одновременно обслуживать только одного пользователя.

Это означает, что вы крайне ограничены в своеммасштабируемость приложения и отсутствие возможности привлечь множество пользователей.

Существует также проблема, когда ваше соединение не очень хорошо заблокировано, все может стать странным.

Например, один поток можетутилизируйте соединение, пока другой поток пытается выполнить для него команду.

Лучшая возможность - использовать пул соединений, создавая новый объект соединения, когда он вам нужен. Таким образом, вы можете обрабатывать много запросов одновременно, и вашим ограничением должна быть база данных.

0 голосов
/ 08 ноября 2019

Да, вы должны повторно использовать DatabaseReader в параллельных запросах. Считыватель является потокобезопасным и не использует замки для обеспечения безопасности этого потока.

...