Какова идиома состояния Лифта? - PullRequest
3 голосов
/ 08 марта 2012

Я читал о ОТДЫХЕ. Когда у меня был обзор Lift, кажется, что Lift:

  1. поддерживает состояние на сервере (приложение Java EE) и
  2. требуется соответствие сервера в кластерной среде

Идея Лифта о полноте кажется отличной от ОТДЫХА и родственников. Что именно является идиомой состояния Лифта? Зачем ему нужно сходство с сервером? Станет ли оно минным полем, если мы отклонимся от фиксированной идиомы?


Как бы это сыграло (и стало преимуществом) в этой гипотетической одновременно отредактированной таблице:

  1. Пользователь редактирует ячейку в строке. Редактор показывает «синхронизацию» для этой ячейки, когда пользователь продолжает редактирование (асинхронно), и удаляет это уведомление, если данные были синхронизированы с резервным хранилищем .
  2. Другой пользователь начинает редактирование документа. Первый редактор получает уведомление.
  3. Первый пользователь редактирует строку, которую видит другой парень. Другой парень знает, какие строки изменены.

Обновление: Дейв прокомментировал точную причину сходства сервера: здесь и здесь . Оказывается, FourSquare, сайт с очень большой посещаемостью, использует именно этот метод.

1 Ответ

2 голосов
/ 10 сентября 2012

Это обсуждается в Lift in Action, как это происходит. Основной причиной сохранения состояния является безопасность: лифт в значительной степени зависит от состояния в памяти для функций безопасности, таких как GUID с отображением функций на элементах управления страницей. Кроме того, вы обнаружите, что фреймворки, утверждающие, что они не имеют состояния и делают что-то, кроме чистого REST, на самом деле довольно плохо работают, будучи фреймворком с состоянием: обычно это включает в себя циклическое отключение состояния в куки или сериализацию его в скрытое поле формы. Обе эти технологии используются популярными фреймворками (Rails, .NET, Play и т. Д.).

Более того, оказывается, что хранение вещей в памяти довольно полезно, поскольку это означает, что каждый запрос не должен повторно инициализировать такие вещи, как соединения с базой данных и так далее. Это также учитывает некоторые очень хорошие функции, такие как поддержка кометы Lift.

Надеюсь, это поможет.

Тим

...