Session
может в конечном итоге быть сохранено вне процесса или в базе данных, что может сделать его получение дорогостоящим.Скорее всего, вы будете использовать базу данных сеансов, если ваше приложение будет размещено на ферме серверов, а не на одном сервере.Ферма серверов обеспечивает улучшенную масштабируемость и надежность, и это часто является распространенным сценарием развертывания.Задумывались ли вы об этом?
Кроме того, когда вы используете Session
не в процессе, он в итоге получает сериализованный для отправки вне процесса или в базу данных, и десериализуется при получении, и вы эффективно делаете то, что вы описали выше:
... обновления будут медленнее, так как я бывосстановить весь словарь при его изменении. ...
.., поскольку, даже если вы используете отдельные ключи сеанса, весь объект Session
для пользователя сериализуется идесериализованы вместе (все сразу).
Принимая во внимание, что Cache
будет в памяти на конкретном сервере в ферме и, следовательно, намного более эффективен, чем выход из процесса илибаза данных.Однако что-то в кеше на одном сервере может не быть в кеше на другом.Поэтому, если последующий запрос пользователя направляется на другой сервер в ферме, кэш на этом сервере может еще не содержать элементы пользователя.
Тем не менее, я бы посоветовал вам использовать Cache
, если вы 'кеширование по соображениям производительности.
ps Да, вы слишком стараетесь.Не изобретайте велосипед, если вам действительно не нужно.: -)