Одно из самых ясных объяснений недостатков состояния сеанса исходит непосредственно из диссертации Роя Филдинга , где он вводит REST. (Акцент мой)
Затем мы добавим ограничение к
клиент-серверное взаимодействие:
общение должно быть без гражданства в
природа, как в
стиль клиента-сервера без сохранения состояния (CSS)
Раздел 3.4.3 (рисунок 5-3), такой, что
каждый запрос от клиента к серверу
должен содержать всю информацию
необходимо понять запрос ,
и не может воспользоваться преимуществом
сохраненный контекст на сервере .
Сессия
Таким образом, состояние сохраняется полностью
клиент.
Это ограничение индуцирует свойства видимости, надежности,
и масштабируемость.
Видимость есть
улучшена, потому что система мониторинга
не должен смотреть за пределы одного
запросить данные для определения
полный характер запроса.
Надежность улучшена, потому что это
облегчает задачу восстановления после
частичные сбои [133].
Масштабируемость составляет
улучшилось, потому что не нужно хранить
состояние между запросами позволяет
серверный компонент быстро бесплатно
ресурсы и еще больше упрощает
реализация, потому что сервер
не должен управлять использованием ресурсов
между запросами.
Рой продолжает говорить, что применение этого ограничения является компромиссом при проектировании, и этот выбор имеет негативные последствия.
Как только вы решите не использовать состояние сеанса в архитектуре приложения, у вас останется поддержка таких вещей, как корзины покупок, одним из двух способов. Либо корзина полностью поддерживается клиентским приложением, либо сохраняется как состояние ресурса. Что делает ресурс ресурсом, так это то, что он идентифицируется URI и может управляться стандартными глаголами интерфейса. Если вы сохраняете корзину как Ресурс, то, как говорит Стефан, вы можете отправить ссылку на ресурс коллеге. При таком подходе корзина покупок может быть реализована так же, как и любой другой ресурс.