Можно ли создать полностью настраиваемый режим состояния сеанса вместо использования Inproc или SQLServer?
Ответ 4
Это более старый вопрос, связанный с тем, что я делаю здесь и сейчас с октября 2014 года.
В принципе, исходные ответы по-прежнему правильны, поскольку вы можете создать собственную систему управления состоянием сеанса OutProc, но теперь, когда Microsoft гораздо более активно участвует в работе с открытым исходным кодом, вы можете так же легко перейти к MSOpenTech и загрузите порт Redis для Windows, который также поддерживается Windows Azure.
Redis - это система управления состоянием сеанса OutProc, которая может быть запущена в отдельном окне процесса/консоли или в качестве службы Windows для хранения значений сеанса/ключа задней панели.
MSOpenTech:
Redis - очень популярный open-source, сетевой, в памяти, ключ-значение хранилище данных. Он известен высокой производительностью, гибкостью, богатым набором структур данных и простой простой API. MS Open Tech имеет работали с сообществом Redis для создания готовой продукции Порт Windows Redis, включая поддержку 64-разрядной версии, установщик для Windows Azure, поддержка NuGet и многое другое.
Redis.io Вступление:
Redis - это открытый исходный код, лицензированный BSD, расширенный кеш-ключ и магазин. Он часто упоминается как сервер структуры данных, поскольку ключи может содержать строки, хэши, списки, наборы, отсортированные наборы, растровые изображения и hyperloglogs
Вы можете использовать его для хранения состояния сеанса для ASP.NET MVC, WebAPi и SignalR, что очень удобно в среде веб-фермы.
Установочный пакет Microsoft.Web.RedisSessionStateProvider
Он легко настраивается через web.config, и когда я говорю легко, я имею в виду просто.
<system.web>
<sessionState mode="Custom" customProvider="MySessionStateStore">
<providers>
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="127.0.0.1" port="6379" accessKey="" ssl="false" />
</providers>
</sessionState>
</system.web>
Так просто на самом деле, я сначала подумал, что я должен делать это неправильно.;)
Но все, что требуется, чтобы обработать состояние сеанса в Redis.
Его порт с высокой производительностью, очень близкий к оригинальной версии POSIX.
Мы используем его для приложения финансовых сервисов, которое сталкивается с большими нагрузками в реальном времени, толкает и тянет через Signalr, который, как указано выше, также "поддерживает" Redis для поддержания состояния сеанса хаба.
Итак, хотя вы все еще можете сделать как принятые ответы, через три с половиной года я бы посмотрел на некоторые из этих альтернатив на опыт управления сеансом ASP.NET по умолчанию, который доступен бесплатно через OSS.
https://github.com/MSOpenTech/redis
http://www.codeproject.com/Articles/636730/Distributed-Caching-using-Redis