2015-09-09 7 views
1

Если я правильно понимаю, Play Framework использует файлы cookie для хранения всего сеанса, тогда как PHP просто хранит идентификатор сеанса в файле cookie и сохраняет собственно сеанс на стороне сервера.Разница между сеансом Play Framework и сеансом PHP

Play Framework способствует хорошей горизонтальной масштабируемости с ее подходом. Но я не вижу преимущества, если я использую другие структуры и сохраняю сессию в базе данных, например, с Symfony и Redis.

Итак, как лучше работает Play Framework (для некоторых случаев использования)?

ответ

1

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

Но, конечно, ничего, кроме тривиального приложения, будет необходимо поддерживать некоторые данные сеанса, и, как вы уже упоминали, вы обычно делаете это с помощью кеша или БД. Сеанс cookie Использование Play ограничено примерно 4Kb, поэтому оно предназначено только для относительно небольшого количества данных.

Преимущества архитектуры без гражданства многозначны и предназначены для использования архитектурой Play.

Немного устаревшее, но релевантность по-прежнему применяется в этом article.

+0

Спасибо за ваш ответ, но я все еще не вижу преимущества, так как также с помощью игры вы обычно должны использовать подход к базе данных из-за проблем безопасности с сеансом (?) –

+0

Нет проблем. и сеансы настолько широко используются в веб-приложениях/структурах, что, я думаю, вы могли бы долго обсуждать, следует ли их использовать или нет, и является ли один подход лучше другого. Я думаю, что решение Play не использовать сеанс сервера частично рождается из-за раздражения создателя Гийома Борта с корпоративными Java-библиотеками, такими как Servlet API (см. Http://guillaumebort.tumblr.com/post/558830013/why-there-is-no -servlets-в-игре). Одним из важных преимуществ не использования сеанса является горячая перезагрузка. – Nio

+0

Еще раз спасибо! :) Позвольте мне перефразировать мой вопрос: почему кто-нибудь хранит сеанс в памяти, а не в базе данных (за исключением, может быть, из соображений производительности)? Что касается статьи, связанной с вашим основным ответом, кажется, что NoSQL-База данных, например, была бы прекрасно в качестве хранилища сеансов. –