Можем ли мы сделать Restful webservice stateful

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

Мой запрос заключается в том, почему нельзя сделать то же самое с Restful webservices, я думаю, что я должен иметь возможность реализовать веб-сервис, который может продолжаться с того же сеанса, в котором идентификатор сеанса передается с помощью Restful webservice, является Stateful.

Итак, мой вопрос: веб-сервисы RestFul - это просто концепция с рекомендацией не делать их с точки зрения состояния? или там будут проверки в Restful webservice libraries [как Джерси], чтобы люди перестали это делать?

Ответы

Ответ 1

Безгражданство REST предназначено для обеспечения наилучшего применения приложений. Вы можете добавить состояние, но это при компромиссе по масштабируемости.

Одна из наиболее распространенных причин добавления состояния в REST - для аутентификации. После установления безопасного соединения клиент может отправить безопасный файл cookie. Этот файл cookie затем добавляется клиентом ко всем запросам сессии. Сервер поддерживает состояние, а затем загружает это состояние с каждым запросом на основе файла cookie.

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

Ответ 2

Пока я знаю, мы (разработчики .net) можем использовать WS-привязку в wcf для веб-служб с сохранением состояния.