|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
Привет. Не могу нормально, быстро и элегантно использовать C# объекты в ASP.NET Core сессии. Предлагается использовать сериализацию в строку и из строки. Ну хорошо бы все это сериализовывалось быстро. Но ведь код ниже Код: c# 1. 2.
Модератор: Учимся использовать тэги оформления кода - FAQ выполняется десятки секунд для экземпляров с мегабайт. А для пары мегабайт оно просто вылетает не говоря худого слова (ни ексепшн, ни еррор колбак функция не срабатывает). Есть ли что-нибудь вроде HttpContext.Session.SetObject, чтоб обойтись без сериализации? Есть ли какие-нибудь трюки, чтоб ускорить JsonConvert.SerializeObject? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 00:22 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
Renziglov, С сессией всё хорошо. По возможности использование сессии нужно избегать. Хранить в сессии большие объекты размером больше мегабайта -- вы явно что-то делаете не так. Хотите кеш? Используйте кеш, не сессию. У вас на выбор IMemoryCache -- для хранения данных в рамках одного экземпляра приложения без необходимости сериализации в строку. IDistibutedCache -- хранение данных в рамках любого количества экземпляров приложений (серверов), но уже потребуется сериализация в массив байт, что всё же быстрее чем JSON. А сессия -- это что-то максимально лёгкое, для чего подойдёт строковой тип. Не более того. Лучше откажитесь от сессий. Или расскажите для чего вы её используете, может чего подскажем. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 00:44 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
hVostt, Замена сессии на кеш автоматически приводит к изобретению велосипеда под названием сессия. Только домашнего изготовления. В кеше нужно будет организовывать его обслуживание, характерное для сессии. Такое я делал. Использовал глобальный ConcurrentBag в апликейшене с отдельным потоком, который это осблуживает и убирает мусор. Ключом была сешон айди (т.е. сессия таки испольовалась для незначительных нужд). Не понравилось. Задача стоит сохранять некие снэпшоты из базы данных для данного пользователя и хранить в них пользовательсие изменения до тех пор, пока пользователь на како-либо форме не нажмет кнопку сохранить. После сохранения данные ипользуются и модифиуируются на других формах. Кроме данных из БД над снэпшотами проделывается некий вычислстельный процесс при первой загрузке. Из чего следует, что не хранение снэпшота в состоянии означает долгий стартап при любой попытке его использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 01:06 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
Renziglov, Исчо раз говорю, сессия для хранения промежуточных результатов для пользователя между запросами. Так как требуется поддерживать масштабирование из коробки, сессия должна серилизовываться, чтобы быть доступной в разных экземплярах приложения. Хранить в памяти без серилизации, это не сессия, это кеш. При чём локальный кеш. Можете работать с ним как с сессией. Раз приходится хранить некие снепшоты из базы для пользователя, значит задача решается херово. Нарушается один из основных принципов HTTP (без состояния). ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 09:38 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
Renziglov Задача стоит сохранять некие снэпшоты из базы данных для данного пользователя и хранить в них пользовательсие изменения до тех пор, пока пользователь на како-либо форме не нажмет кнопку сохранить. Может всё-таки задача по другому звучит, а через "некие снэпшоты из базы" - это уже попытка её реализации? Renziglov Кроме данных из БД над снэпшотами проделывается некий вычислстельный процесс при первой загрузке. Из чего следует, что не хранение снэпшота в состоянии означает долгий стартап при любой попытке его использовать. Какой ещё долгий стартап? 50 ms, 100 ms? Почему выбор данных из бд по одному пользователю и некая их обработка занимает много времени? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 10:05 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
hVostt, >Нарушается один из основных принципов HTTP (без состояния) Ссылаться на нерушимость основных принципов - признак мм... ну у нас такое на военной кафедре практиковалось. Причем тут HTTP стейтлес? Silverlight, Mobile, Blazor applications используют HTTP тока держись, но хранят состояние лучше не придумаешь. HTTP тут не причем. А что причем, так это бизнес домен. И то, что пользователь платит за быстрое и респонсив приложение и ничего не знает про ваши основные принципы. Вот из этого мы и исходим в своей работе. Сессию придется переделывать для InProc. Сериализация в строки просто убивает скорость. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 20:03 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
Renziglov Ссылаться на нерушимость основных принципов - признак мм... ну у нас такое на военной кафедре практиковалось. Нет никакой нерушимости, есть определённые знания, сформированные на основе опыта и исследований тысяч и миллионов людей. То, что вы клали на это и хотите самостоятельно наступить на известные грабли -- ваше право, ничего против не имею. Renziglov И то, что пользователь платит за быстрое и респонсив приложение и ничего не знает про ваши основные принципы. Вот из этого мы и исходим в своей работе. Не имею желания вступать в очередную бессмысленную дискуссию про отношения к знаниям. Не хотите, ваше право, страдайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2019, 22:52 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
Renziglov пользователь платит за быстрое и респонсив приложение Да, платит, исправно. Хорошие деньги. И получает быстрое приложение без всяких сессий Хорошо бы Вы задачу таки озвучили, вместо полемики. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 11:13 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
ну сессия точно перфоманса не даст. эт проверяется нагрузочными тестами легко лучше опиши что ты хочешь получить, а не конкретную реализацию копать ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 15:47 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
handmadeFromRu ну сессия точно перфоманса не даст. эт проверяется нагрузочными тестами легко лучше опиши что ты хочешь получить, а не конкретную реализацию копать Кстати да. InProc сессия может ещё и ухудшить производительность, потому как на неё блокировки будут накладываться. Понимаю ещё, если её в Redis или Couchbase сохранять, а для сериализации использовать ProtoBuf. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.11.2019, 17:15 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
skyANA Понимаю ещё, если её в Redis или Couchbase сохранять, а для сериализации использовать ProtoBuf. ZeroFormatter ещё быстрей, а в коробке идёт IDistributedCache, и любой провайдер ходь в редиску, ходь в аэроспайк.. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2019, 22:44 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
hVostt ZeroFormatter ещё быстрей, а в коробке идёт IDistributedCache, и любой провайдер ходь в редиску, ходь в аэроспайк.. ZeroFormatter в копилочку либ спс ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 09:50 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
hVostt skyANA Понимаю ещё, если её в Redis или Couchbase сохранять, а для сериализации использовать ProtoBuf. ZeroFormatter ещё быстрей, а в коробке идёт IDistributedCache, и любой провайдер ходь в редиску, ходь в аэроспайк.. Только вот два года не обновлялся.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 09:56 |
|
ASP.NET MVC Core. Что с сессией?
|
|||
---|---|---|---|
#18+
ну как оно с бореться с болью юнити https://medium.com/@neuecc/zero-overhead-async-await-for-unity-by-custom-async-statemachine-with-c-7-0-6808695733ba ну такое ) п.с. я тут в баре с джава прогерами в диспут вступил...оказывается в мире джавы async считают мифов вплане нахер юзать. мои доводы что тесты показываю более равномерную работу сервака и увеличение пропускной спобоности говорят криво смотрел) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2019, 13:43 |
|
|
start [/forum/topic.php?fid=18&msg=39894859&tid=1354855]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
others: | 271ms |
total: | 415ms |
0 / 0 |