Статьи

Основные стратегии хранения сеансов ASP.NET

Поскольку протокол HTTP, используемый веб-приложениями, является протоколом без сохранения состояния, данные нигде не хранятся; для каждого веб-запроса браузером открывается новое HTTP-соединение. В тех ситуациях, когда сохранение данных имеет решающее значение, ASP.NET Core предоставляет сеансы для хранения пользовательских данных. Это хранилище данных поддерживается самим приложением ASP.NET Core на том же сервере, что и приложение. 

Хотя ASP.NET Core предоставляет поставщика сеансов в памяти, который хранит сеансы, иногда нагрузку необходимо сбалансировать. В этих сценариях используются стратегии хранения сессий, такие как липкие сессии или распределенный кеш.

Липкие сессии — нет, почему?

При использовании липких сеансов используется балансировщик нагрузки, и все пользовательские запросы направляются на один сервер. Основным недостатком использования липких сеансов для приложения ASP.NET Core является неправильное распределение нагрузки. Иногда запросы увеличиваются до такого уровня, что они полностью перегружают сервер, отвечающий за обслуживание данных. Кроме того, если этот сервер выйдет из строя, данные могут быть полностью потеряны, что приведет к одной точке отказа.

Хранение основных сессий ASP.NET в распределенном кэше

Распределенный кеш решает все проблемы, возникающие при использовании липких сессий. Распределенный кеш — это кеш-хранилище, используемое несколькими серверами приложений, обычно поддерживаемое в качестве внешней службы для хранения и доступа к данным. Основным преимуществом распределенного кэша является то, что он не только увеличивает масштабируемость, но и повышает производительность основного приложения ASP.NET. На диаграмме ниже показано, как распределенный кеш служит для хранения сессий. В кластер распределенного кэша можно добавить несколько серверов, что делает его линейно масштабируемым. Пользователи общаются с веб-фермой ASP.NET Core через балансировщик нагрузки. Веб-ферма далее использует распределенный кеш для хранения сессий поставщика услуг.

Хранение сессий в распределенном кеше

Стандартный интерфейс IDistributedCache ядра ASP.NET

Интерфейс IDistributedCache  предоставляется Microsoft для интеграции распределенного кэша в приложения ASP.NET Core. Приложение взаимодействует с кешем с помощью этого интерфейса независимо от используемой реализации кеша. Вот как вы можете настроить свой поставщик хранилища сеансов через IDistributedCache.


C #