Ну, просто, вам нужно как-то сохранять информацию.В связи с этим есть ряд вариантов.Вы можете сохранить его в локальном хранилище на клиенте и фактически передавать его при каждом последующем запросе.Это работает лучше для приложений в стиле SPA, где вы в значительной степени делаете все через AJAX.Другим технически клиентским механизмом хранения будет установка файла cookie сеанса с опубликованной информацией о соединении.Здесь я говорю о явной установке и чтении из cookie с временем жизни «сеанса», без использования сессий.
Или вы можете использовать настоящий сеанс, то есть Session
.В любом случае, TempData
- это просто Session
, но здесь это было бы неуместно, так как вам нужно было бы обеспечить, чтобы TempData
хранился каждый раз, когда к нему обращаются, или он не выдержит следующего запроса.Если вы делаете это, то вы можете просто использовать Session
и не беспокоиться об этом.
Сериализация в значительной степени требуется независимо от того, что вы делаете.Нет никакого способа сохранить фактический экземпляр объекта C #, поэтому вам нужно будет либо записать его в реляционное хранилище, например, в базу данных, либо сериализовать его в JSON.
Одно альтернативное решение, которое не требует сохраненияФактическая информация о соединении заключается в создании собственного пула соединений.Для этого потребуется класс с одноэлементной областью действия с ConcurrentDictionary
иваром и, вероятно, использование SemaphoreSlim
для блокировки во время чтения и записи этого словаря, чтобы вы не создавали и не теряли связи.Затем вам просто нужно как-то назначить ключ для их конкретного соединения в клиенте словаря, например, через Session
или cookie.Это на самом деле немного более безопасно, так как вы не сохраняете информацию о подключении к базе данных после первоначальной публикации, но вы можете закончить тем, что исчерпали доступные подключения к серверу, если слишком много одновременных пользователей.Конечно, это может быть проблемой, независимо от.Вам также понадобится некоторая политика для удаления соединений.Это не самая простая настройка.
Лично я бы просто использовал Session
на этом.Это достаточно безопасно, пока вы принимаете стандартные меры по предотвращению угона сеанса, и его легко внедрить.Если вы создаете приложение в стиле SPA, то я бы придерживался локального хранилища, так как с самого начала будет лучше сохранять информацию на стороне клиента, но в этом случае требуется немного больше возможностей.