Я собираюсь перенести часть своего C# кода WinForms в какое-нибудь серверное приложение Blazor (используя. Net Core).
В своем коде Winforms я реализовал свой собственный класс Global Cache Manager, который
- загружает все элементы в память из базы данных при первом запросе
- использует синхронизацию для обновления sh только тех элементов из базы данных, которые были изменены demande
- предотвращает запись устаревших данных в базу данных (используя некоторую оптимистическую c процедуру блокировки).
Использование памяти показывает, что это прекрасно для размера данных, которыми я должен управлять. Производительность в целом отличная, за исключением, конечно, когда я впервые загружаю данные.
Моя первоначальная идея состояла в том, чтобы зарегистрировать службу Singleton, которая будет извлекать данные один раз и обрабатывать синхронизацию, как я делал в приложении WinForms.
Поскольку я не совсем знаком с миром веб-сервисов, я провел некоторое исследование и натолкнулся на IMemoryCache
, который на самом деле кажется довольно похожим.
Итак, на вопрос: я знаю, что я должны использовать какое-то кэширование, поскольку загрузка всех элементов каждый раз снижает производительность. Есть ли какая-то конкретная c причина, по которой я должен НЕ использовать мой подход к управлению глобальным кэшем и перейти к IMemoryCache
или любому другому методу (предложения приветствуются).