Являются ли продолжения ключевой особенностью в Приморском? - PullRequest
10 голосов
/ 26 ноября 2011

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

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

Это наиболее актуально для Seaside в связи с использованием кнопки «назад»?Использование блоков кода и «обратных вызовов» НЕ то же самое, что использование продолжений?

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

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

Ответы [ 2 ]

13 голосов
/ 26 ноября 2011

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

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

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

2 голосов
/ 28 ноября 2011

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

...