Считается ли, что протоколы без сохранения состояния лучше использовать над протоколами с контролем состояния?
-
06-07-2019 - |
Вопрос
Я вижу, что протоколы с отслеживанием состояния приводят к менее испорченному «эмулированному состоянию», как файлы cookie.
но тестирование становится намного сложнее, чтобы убедиться, что ваша реализация верна и переподключена, а продолжения сеанса могут быть очень трудными для обработки. Р>
Считается ли лучшей практикой всегда использовать протоколы без сохранения состояния или они действительно специфичны для конкретного домена? Р>
Я думаю, что аутентификация становится проще при работе с протоколами с отслеживанием состояния, но есть ли другие причины, по которым вам следует использовать протокол с отслеживанием состояния? Р>
Решение
Насколько важно состояние вашего приложения? Вам нужен постоянный поток данных между различными машинами или более полезно иметь пакетные режимы? Если вы пишете приложение типа IP-телефонии, то, вероятно, вам захочется чего-то достаточно полного состояния, если вы можете обойтись без сохранения состояния, это, вероятно, будет дешевле и проще сделать это таким образом. Выполнение операций с состоянием обязательно является более хрупким, потому что если какой-либо конец соединения обрывается или само соединение обрывается, вы рискуете потерять данные, тогда как при соединении без состояния вам, скорее всего, придется подождать некоторое время и попробовать еще раз.
Они действительно являются разными инструментами для разных задач, но, учитывая простоту и повсеместность технологий без сохранения состояния в сети, логично смотреть в этом направлении, когда у вас есть такая возможность. Р>
Другие советы
Преимущества лиц без гражданства:
<Ол>Я бы посчитал это специфичным для домена Если вы пишете моральный эквивалент пинга, протокол без гражданства является правильным выбором. С другой стороны, если вы пишете VNC, отслеживание состояния - это, безусловно, верный путь.
Что касается того, когда выбирать, какие из них следует учитывать. Во-первых, хотя варианты реализации либо / или, проблемное пространство является континуумом. У всех задач в реальном мире есть хотя бы небольшое состояние, вопрос в том, сколько их стоит, и стоит ли их преодолевать, стоит того, чтобы отслеживать их с обеих сторон. И второе, вы обычно имеете дело со стеком протоколов, а не с одним протоколом; убедившись, что все живет на должном уровне, можно значительно упростить ситуацию.
Протокол без сохранения состояния проще кластеризовать, поскольку при последующих запросах состояние не нужно передавать с одного сервера на другой.
Я лично не знаком со всеми проблемами проектирования, связанными с состоянием, а не с состоянием, но я знаю, что NFSv4 является состоянием после 15 лет предыдущих версий NFS, не имеющих состояния, поэтому очевидно, что безгражданство стало существенным ограничением для Дизайнеры NFS.
Несколько минут поиска в Google показывает несколько статей и блогов, рассказывающих о состоянии NFSv4; это должно быть интересным чтением для некоторых проблем дизайна.
Еще одна приятная вещь, связанная с протоколами без сохранения состояния, - это то, что проще обрабатывать ситуации аварийного переключения сервера и / или кластеризации / распределения нагрузки.
Stateful лучше. Тогда вам не нужно отправлять состояние все время. Протокол становится проще.