У меня есть настольное приложение .NET, которое используют 5000 пользователей, распространяемых по всей Канаде.
Одной из функций является взаимодействие с некоторыми модемами с использованием некоторых параметров, которые мы получаем из базы данных.
Уникальная особенность этой функции:
1 - он должен быть очень быстрым, потому что он обменивается данными с модемными инструментами, и на этом модеме есть тайм-аут, и мы не можем это контролировать.
2 - те данные, которые мы читаем из базы данных, имеют очень большой размер, у них есть параметры для всех типов модемов, которые похожи на 2000 из них.
3 - эта информация меняется не очень часто.
Возможно, они меняются только один раз в месяц.
Как лучше всего справиться с этим?
Я думал запросить всю эту информацию при запуске приложения и сохранить ее в памяти, но я не решаюсь сделать это, потому что это может занять время, потому что есть тонны информации.
Наш стандарт на работе заключается в том, чтобы иметь сервисы WCF всякий раз, когда мы хотим связаться с базой данных, но я могу получить исключение для этого правила, но в то же время было бы хорошо придерживаться этого правила, если это возможно.
Мой вопрос, можем ли мы сделать кеш службы WCF на стороне сервера?
так что если один клиент запросит данные для одного типа модема, он будет в кеше для всех последующих запросов?
Учтите, что у нас есть несколько серверов для служб WCF, поэтому с этим параметром кэш будет более сложным.
является ли кеш WCF (если возможно) лучшим ответом?
Можем ли мы получить какое-либо преимущество, если обойдем WCF и получим прямой доступ к базе данных?
Пожалуйста, совет, потому что это очень важный вопрос