Если вам нужно сохранить некоторые «сеансовые» данные в постоянном хранилище, таком как база данных, я бы подумал, что это не сеансовые данные, а другое.
Читая ваш вопрос, я считаю, что это какой-то рабочий процесс , а не данные сеанса .
Состояние сеанса в ASP.NET не предназначено для хранения больших порций данных; это больше для хранения базовых значений, таких как строки, целые числа, направляющие и т. д., и использования таких идентификаторов (, потому что, например, SQLServer, StateServer или пользовательские режимы состояний сеанса сериализуют хранимые объекты и десериализуют их при каждом повторном получении, и очевидно, сложные типы имеют большое влияние на производительность -, отслеживать некоторые виды взаимодействия с пользователем.
Подводя итог, я бы не назвал "потерю производительности" хранящим пользовательское состояние или изменения данных, связанных с пользователем, но использовал бы доступные ресурсы для правильной цели.
В сочетании с файлами cookie HTTP после истечения времени ожидания сеанса, поскольку файлы cookie будут иметь какой-либо идентификатор (и), ваша логика на стороне сервера должна быть способна восстанавливать связанные данные и снова сохранять их в состоянии сеанса.
В любом случае, если вас беспокоит влияние такого решения на производительность, вы можете перейти на многоуровневую архитектуру, например:
Один компьютер будет иметь службу на базе Windows Communication Foundation, реализующую доступ к бизнесу и данным.
Один компьютер с приложением ASP.NET Web Forms.
В этом случае люди, просматривающие ваше приложение ASP.NET - пользовательский интерфейс - не будут испытывать побочных эффектов от периодического обновления данных, связанных с сеансами, до некоторого хранилища данных, поскольку это будет сделано в отдельном процессе или машине.