Недавно я разрабатывал веб-приложение в Seaside + Squeak и нашел, что это замечательный опыт. Море на самом деле является главой и плечами над всеми остальными структурами, и я чувствую, что работаю на более высоком уровне абстракции (выше цикла HTTP-запроса/ответа и HTML-шаблонов, с которыми вы сталкиваетесь в других средах).
Тем не менее, я немного запутался в компонентах Seaside. Недавно мне пришлось отображать список объектов на компоненте (аналогично первой странице stackoverflow). Сначала я сделал каждый объект компонентом (подкласс WAComponent), но это оказалось действительно расточительным, и мне пришлось динамически устанавливать #children в родительский компонент, чтобы он вообще работал. Затем я попытался сделать их визуализацией объектов (объектов, которые не являются подклассами WAComponent, и рендеринга с помощью renderOn: вместо renderContentOn:, как и у компонентов). Это сработало, но теперь они больше не могли получить доступ к глобальному состоянию в объекте сеанса, поскольку компоненты могут (используя #session). Затем я обнаружил значение "WACurrentSession", которое дает любому объекту доступ к текущему объекту сессии Seaside. Теперь я смог заставить их визуализировать объекты. Кроме того, я обнаружил, что я мог бы переписать много других, более мелких компонентов в качестве объектов визуализации.
Кроме того, что нужно использовать состояние call/answer или backtracking, существуют ли другие причины для использования компонентов над объектами рендеринга?