Если вы посмотрите на протокол с точки зрения разговора, это может упростить его.
В протоколе без сохранения состояния нет «Hello» или «Goodbye». Каждый запрос просто «Дай мне это», «Возьми это» или тому подобное, и каждый запрос стоит сам по себе. Если клиент что-то дает серверу, ему все равно, что сервер делает с ним. Если клиенту необходимо узнать, что он только что дал серверу, он запросит его еще раз для проверки.
Это (безгражданство) звучит хорошо, и это хорошо для двух независимых процессов (сервера и клиента), особенно если они слабо связаны.
Но если есть два взаимодействующих процесса, в которых две задачи зависят друг от друга, и для успешной работы обеих задач требуется выход другой, тогда безгражданство добавляет накладных расходов, поскольку каждое общение и действие необходимо проверять с помощью вопросов. , Или между ними должен быть общий контекст.
Вспомните, как хирург и ее помощник передают ей инструменты. Хирург говорит «scapel», и она знает, что связь была завершена, когда она получила скальпель, помещенный в ее руку. Помощник с отслеживанием состояния может отслеживать состояние связи и знать, что после «scapel» придет команда «всасывание» или «втягивающее устройство», и он будет готов с соответствующим инструментом. Итак, разговор имеет состояние - начало и конец - «привет» и «до свидания». Это хорошо, потому что это уменьшает задержку и снижает накладные расходы на связь.
Вы могли бы сделать протокол Surgeon / Assistant без состояний - но повлияет ли это на качество с точки зрения общего результата?