Веб-сервисы с сохранением состояния и сохранением состояния - PullRequest
13 голосов
/ 07 апреля 2010

Представьте себе более сложное приложение 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 ]

9 голосов
/ 07 апреля 2010

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

2 голосов
/ 07 апреля 2010

Состояние, в котором также скрывается большинство ошибок.

2 голосов
/ 07 апреля 2010

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

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

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

...