Я всегда выступал за веб-сайт без гражданства, но хотел бы знать, что говорят сторонники паутины.В каком сценарии состояние лучше, чем безстоящее для Интернета?
Есть ли у вас ситуация, когда состояние более подходящее, чем апатрид?
Я всегда выступал за веб-сайт без гражданства, но хотел бы знать, что говорят сторонники паутины.В каком сценарии состояние лучше, чем безстоящее для Интернета?
Есть ли у вас ситуация, когда состояние более подходящее, чем апатрид?
Использование состояний обычно облегчает работу программиста.
Однако в штатах также представлены всевозможные проблемы параллелизма, которые просто отсутствуют в ситуациях без гражданства.
Это по существу дискуссия между функциональным и императивным программированием.
Такие вещи, как длинные формы (и действительно все, что требует более одного обновления страницы), намного проще с постоянным состоянием, поскольку вы можете фактически отслеживать, на какой странице/стадии пользователь находится в простой и прямой форме , Тем не менее, я лично не думаю, что такое небольшое преимущество стоит того, но это сильно зависит от рассматриваемого веб-приложения.
В нашем проекте используется веб-каркас Wicket, который позволяет взаимодействовать с состоянием или без состояния. Межсетевые страницы имеют ряд преимуществ:
Все, что возможно в заявке на работоспособность, также может быть реализовано как апатрид - вам просто нужно сохранить состояние на клиенте и отправить всю соответствующую информацию о состоянии по каждому запросу.
Ссылка на калитке: http://wicket.apache.org/
Я в statefull клиента-сервера без гражданства из-за лагеря к масштабированию, но когда сталкиваются с препятствиями, объясняющим, почему это и что стало труднее реализовать с помощью сервера без гражданства, вы получите вид ушел в отставку в конечном итоге, это то, где светит сервер с поддержкой состояния :). Несмотря на то, что я предпочитаю statefull client, это непросто эффективно реализовать с помощью asp.net viewstate, и, возможно, это то, где statefull web становится практически. Я думаю, что statefull client, сервер без гражданства делает вас более осведомленным о количестве данных, которые транспортируются между шинами. Это иногда скрывается до тех пор, пока не возникнет проблема с использованием модели statefull server programming. Кроме того, переход от stateless к statefull легко (просто игнорируйте информацию о состоянии, которую вы предоставляете, поскольку вы уже знаете это ..). Переход на противоположное почти невозможно/не стоит. Еще одна вещь, использующая statefull-сервер, заключается в том, что состояние очистки/кеш часто является проблемой, когда вы используете также statefull-клиент.Это просто неинтуитивно и сбивает с толку, или мабы просто я :)
В любом случае GWT и многие другие современные инструментальные средства (Silverlight, говорящие с WCF), по-видимому, предпочитают клиента с сохранением состояния, сервера без гражданства из-за проблем с масштабируемостью. Может быть, сервер с состоянием должен быть исключением из правила без сохранения ... можно выбрать одну страницу/окно.
Stateless веб-приложения необходимы, когда вы начинаете иметь более высокий трафик.
Может быть много пользовательских данных, которые вы не хотите хранить на стороне клиента, например, из соображений безопасности. В этом случае вам необходимо сохранить его на стороне сервера. Вы можете использовать сессию по умолчанию для веб-приложений, но если у вас несколько экземпляров приложения, вам нужно убедиться, что каждый пользователь всегда обращается к тому же экземпляру.
Балансировщики нагрузки часто имеют возможность «липких сеансов», где балансировщик нагрузки знает, какой сервер посылает пользователям запрос. Это не идеально, хотя, например, это означает, что каждый раз, когда вы перезапускаете свое веб-приложение, все подключенные пользователи теряют свою сессию.
Лучший подход заключается в том, чтобы хранить сеанс за веб-серверами в каком-то хранилище данных, в эти дни для этого доступны множество отличных продуктов nosql (redis, mongo, elasticsearch, memcached). Таким образом, веб-серверы не имеют состояния, но у вас все еще есть государственная серверная часть, и доступность этого состояния может управляться путем выбора правильной настройки хранилища данных. Эти хранилища данных обычно имеют большую избыточность, поэтому почти всегда возможно вносить изменения в ваше веб-приложение и даже в хранилище данных, не затрагивая пользователей.
Думаю, я точно не ответил на вопрос OPs, действительно наоборот! Но я почувствовал, что мой ответ вступил в дискуссию ... – shmish111
Я действительно не понимаю, какие «проблемы параллелизма» вы можете получить в веб-приложении ... –
Предположим, у вас одновременно есть два пользователя на вашем сайте. Если оба они представят одновременно, возможно ли, что они оба попадут в вашу базу данных или какую-то другую услугу, и наступит гонка? – samoz
Но это проблема с базой данных; это не имеет никакого отношения к тому, сохраняете ли вы состояние в своем веб-приложении или нет. Для обработки этих проблем записываются базы данных, совместимые с ACID (т. Е. Все реляционные базы данных). –