Сессия по сравнению с шаблоном "одиночка"

У меня есть веб-приложение, где я хотел бы вытянуть пользовательские настройки от базы данных и сохранить их для Глобального доступа. Имело бы больше смысла хранить данные в Singleton или объект Сессии? Каково различие между двумя?

Лучше хранить данные как ссылку на объект или разбить его в текстовые объекты значения (ints и строки)?

6
задан RBT 22 January 2018 в 23:57
поделиться

3 ответа

Сессия. Вот для чего это нужно. Сеанс хранится в глобальном кеше (в основном синглтон) с ключом по идентификатору сеанса. Таким образом, вы получите только данные для интересующего сеанса. Использование синглтона в основном будет реплицировать глобальный кеш, и вам придется заново изобретать механизм для независимого извлечения данных для каждого сеанса.

Продолжайте и сохраните объект. Пусть сеанс позаботится о сериализации его во что-то, что можно восстановить. Однако будьте осторожны с тем, что вы вкладываете в сессию. Вы не хотите хранить там слишком много данных, иначе вы будете использовать много памяти (при условии наличия кеша в памяти).

12
ответ дан 8 December 2019 в 12:58
поделиться

Если эти настройки будут использоваться для всех пользователей сайта, поместите их в синглтон или в кэш приложения. Если они специфичны для каждого пользователя, поместите их в сессию.

Используйте объектные ссылки при добавлении в кэш приложения или сессии - я полагаю, что типы значений будут помещены в коробку, чтобы они выглядели как объекты в кэше. Если вы используете синглтон, это может произойти в любом случае.

4
ответ дан 8 December 2019 в 12:58
поделиться

Объект сессии, определенно.

Синглтоны существуют на уровне процесса. Это означает, что если в любой момент времени на ваш сайт заходят 20 пользователей, они используют один и тот же объект синглтона. К этой концепции трудно привыкнуть, если вы не часто занимаетесь веб-разработкой.

Сессии существуют на уровне пользователя. Это означает, что вы можете хранить данные для каждого пользователя, а не для каждого процесса.

2
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: