Веб-сервисы с сохранением состояния и без сохранения состояния


Представьте себе более сложное приложение CRUD, которое имеет трехуровневую архитектуру и взаимодействует через веб-сервисы. Клиент начинает разговор с сервером и делает что-то вроде мастера. Для обработки мастера клиенту требуется обратная связь от сервера.


Мы начали обсуждение веб-сервисов с сохранением состояния или без него для этого подхода. Я провел некоторые исследования в сочетании с моим собственным опытом, который указывает мне на вопрос, упомянутый позже.

Без гражданства веб-сервисы, обладающие следующими свойствами (в нашем случае):

+ high scalability
+ high availability
+ high speed
+ rapid testing
- bloated contract
- implementing more logic on server-side
Но мы можем вычеркнуть первые два пункта, наше приложение не нуждается в высокой масштабируемости и доступности.

Итак, мы подошли к веб-сервису с отслеживанием состояния. Я прочитал кучу блогов и сообщений на форумах, и самым изобретенным пунктом, реализующим веб-сервис с отслеживанием состояния, было:

+ simplifies contract (protocol)
- bad testing
- runs counter to the basic architecture of http 

Но разве почти все веб-приложения не имеют этих плохих моментов? Веб-приложения используют файлы cookie, строки запросов, идентификаторы сеансов и все материал, чтобы избежать безгражданства http.

Так почему же это так плохо для веб-сервисов?

3 13

3 ответа:

Потому что сохранять состояние в веб-сервисе сложно, и если вы не очень осторожны и/или опытны, рано или поздно вы можете столкнуться с некоторыми очень трудными для поиска ошибками.

Состояние

- это место, где скрывается большинство ошибок.

Мне здорово повезло с веб-сервисами с отслеживанием состояния. Они действительно чувствуют себя немного грязными, потому что на вершине HTTP есть дырочка для печенья; но с другой стороны, они были мылом, так что было бы глупо слишком расстраиваться из-за красоты в этот момент.

Одна вещь, которую следует иметь в виду, - это совместимость: если вы делаете веб-сервис с отслеживанием состояния, ваши клиенты должны будут поддерживать ту же идею состояния, что и вы (обычно файлы cookie). Но опять же-сработало отлично для меня.

P. S. Я предположим, что вы находитесь в контейнере, который будет заботиться о том, чтобы отслеживать сеансы для вас.