Вообразите более сложное Приложение типа 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.
Итак, почему это - это плохо для веб-сервисов?
Потому что сохранять состояние в веб-сервисе сложно, и если вы не будете очень осторожны и / или не столкнетесь рано или поздно, вы можете столкнуться с некоторыми очень трудными для поиска ошибками .
Мне довольно повезло с веб-службами с отслеживанием состояния. Они действительно кажутся немного грязными, потому что сеанс дырочных файлов cookie поверх HTTP таков; но, с другой стороны, они были SOAP, так что было бы глупо слишком расстраиваться из-за красоты в этот момент.
Одна вещь, о которой следует помнить, - это совместимость: если вы используете веб-службу с отслеживанием состояния, ваши клиенты должны будут поддерживать ту же идею состояния, что и вы (обычно файлы cookie). Но опять же - у меня все заработало.
P.S. Я предполагаю, что вы находитесь в контейнере, который будет следить за сеансами за вас.