Основано на следующих поясняющих комментариях ОП по данному вопросу:
Существует веб-приложение, которое проверяет изменения каждые 30 секунд и показывает последние авторизации.База данных отслеживает авторизацию сотрудников и часто обновляется.Сейчас я создаю настольное приложение, которое имеет локальное соединение с сервером и может обновляться чаще, но клиент не хочет, чтобы приложение открывало соединение каждую секунду, aldo соединение открывается на несколько мс.
Я думаю, что подходящим решением является бизнес-уровень.
Если вы создаете бизнес-уровень, размещенный в IIS, который осуществляет доступ к базе данных от имени пользователей, используя одного пользователя базы данных.для доступа (пользователь пула приложений или олицетворенный пользователь в веб-приложении), тогда пул соединений значительно сократит число соединений, выполненных с базой данных.
Вот статья MSDN , котораяподробно описывает механизм и преимущества пула соединений.
Все клиенты, включая веб-уровень, будут подключаться к бизнес-уровню с помощью WCF или .Net Remoting (в зависимости от версии .Net), ибизнес-уровень будет единственным приложением, осуществляющим доступ к базе данных.
Дополнительным преимуществом этого подхода является то, что вы можете перемещать весь доступ к базе данных (в том числе из веб-клиента) внутри DMZ, чтобы не было прямого доступа к базе данных.от DMZ наружу.Это может быть хорошим коммерческим аргументом для вашего клиента.
Мы широко используем этот механизм для очень крупных клиентов с высоким уровнем безопасности и производительности.
Обновление
В качестве альтернативы вы можете запросить бизнес-уровень к базе данных каждые 30 секунд, извлечь необходимую информацию и сохранить ее локально на бизнес-уровне вкакая-то база данных (Access, Sql Server Express и т. д.).При получении запросов от клиентов они будут обслуживаться из локального хранилища данных вместо базы данных.
Вы можете сделать это, запустив фоновый поток в событии Application_Start global.asax или добавив запись в кэш, котораяистекает каждые 30 секунд и выполняет работу в событии тайм-аута кэша.
Это уменьшит количество подключений до 1 (или 2, если сеть не изменяется) каждые 30 секунд (или в любое другое время).