Являются ли продолжения ключевой особенностью в Приморье?

Я пытаюсь ускориться на Smalltalk/Seaside. Согласно Wikipedia, "Seaside - основа веб-приложений на основе продолжения". Исходя из фона Java, я не очень хорошо знаком с продолжениями.

После некоторого чтения я понимаю, что продолжения используются для поддержания состояния, в результате чего снимок процесса сохраняется и может быть возобновлен позже (аналогично установке Windows в спящий режим).

Это наиболее актуально для Seaside по отношению к использованию кнопки "назад"? Использование кодовых блоков и "обратных вызовов" не совпадает с использованием продолжений?

Я также пытаюсь оценить текущее значение фактического использования продолжений в Море. Я смущен, потому что многие онлайн-ссылки на Seaside упоминают продолжение как ключевую и определяющую функцию. Тем не менее, я также нашел ряд статей, в которых упоминается использование продолжений в Приморском, не так часто используется, а не является ключевой особенностью.

Большое спасибо за любой полезный вклад в настройку меня прямо с этим!

Ответ 1

Первоначально Seaside использовал продолжения для моделирования потока между страницами и включения кнопки "Назад". Это больше не относится к Seaside 3.0: продолжения полностью необязательны. Если вы хотите использовать функции call: и answer:, вы можете загрузить пакет Seaside-Flow. В противном случае приложение Seaside является бесплатным.

В любом случае, как разработчик веб-приложений, вы никогда не видите (или не видите) продолжения. Они представляют собой деталь реализации, которая хорошо инкапсулирована в веб-инфраструктуру "Приморский".

Обновление: В состоянии Seaside 3.0 управление осуществляется путем хранения специального объекта за запрос. Этот объект запоминает состояние приложения в этот момент времени. Если пользователь вернется, объект знает, как восстановить и возобновить работу с предыдущим состоянием. В этом отношении этот объект ведет себя как продолжение (класс называется WASessionContinuation), но его реализация сильно отличается. Он не выполняет моментальный снимок стека выполнения, а только определенные части состояния приложения (из-за чего потребляется меньше памяти). Также он не прыгает где-то в код, как продолжение, но вместо этого реализует необходимую логику возобновления как часть метода шаблона WASessionContinuation>>#handleRequest (почему он быстрее).

Ответ 2

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