Seaside , аббревиатура, которая расшифровывается как «Squeak Enterprise Aubergines Server с интегрированной средой разработки», — это компьютерное программное обеспечение , веб-фреймворк для разработки веб-приложений на языке программирования Smalltalk . Он распространяется как бесплатное программное обеспечение с открытым исходным кодом под лицензией MIT .
Seaside предоставляет компонентную архитектуру, в которой веб-страницы строятся в виде деревьев отдельных компонентов с отслеживанием состояния , каждый из которых инкапсулирует небольшую часть страницы. Seaside использует продолжения для моделирования нескольких независимых потоков между различными компонентами. [3] Таким образом, это веб-фреймворк, основанный на продолжении [4], основанный на возможности манипулировать стеком выполнения некоторых реализаций Smalltalk .
Хотя последующее улучшение обработки состояния в движках JavaScript веб-браузера привело к тому, что этот аспект сегодня менее важен, метод Seaside обработки состояния браузера (через продолжения ) был первоначальным предметом интереса в первые годы после его выпуска в 2002 году. Этот механизм обеспечивает откат и возобновление, решая многие распространенные проблемы, возникающие при запуске веб-приложений, адекватно поддерживая состояние на стороне сервера, даже когда используются кнопки веб-браузера «Назад», «Вперед» или «Обновить». Серверы на основе продолжения дают разработчику возможность поддерживать состояние сервера масштабируемым образом. [5]
Отличительной особенностью Seaside является интегрированная среда разработки, обеспечивающая доступ к инструментам разработки и поддержку отладки внутри приложения. В режиме разработки на веб-страницу сообщается о необработанных ошибках; разработчики могут получать доступ к коду и состоянию программы и изменять их непосредственно с веб-страницы, что позволяет выполнять процессы выявления и исправления ошибок в интегрированной среде разработки (IDE). [6]
Приложение Seaside — это набор взаимодействующих компонентов. Каждый из них сохраняет состояние при просмотре страниц и может отображать себя в потоке HTML . Таким образом, легко написать компонент один раз, а затем повторно использовать его в другом месте приложения. Seaside также поддерживает понятие задач, которые позволяют программисту описывать высокоуровневую логику взаимодействия компонентов.
Seaside не ориентирован на шаблоны и не предлагает создание или использование шаблонов HTML; HTML- разметка создается программно. (Среда управления контентом Pier на базе Seaside предлагает синтаксис вики-разметки для шаблонов.) Seaside использует обратные вызовы при замыканиях , чтобы указать действия, которые необходимо предпринять при нажатии на ссылку или отправке формы. Разработчики и пользователи Seaside утверждают, что это помогает обеспечить разделение структуры (разметки) от контента и представления ( каскадные таблицы стилей (CSS)). [7] Сочетание компонентов, обратных вызовов и замыканий Seaside может значительно уменьшить семантический разрыв между сложным рабочим процессом и его представлением в коде. [8]
Seaside поддерживает Ajax посредством интеграции со script.aculo.us и jQuery . Seaside также поддерживает технологию передачи серверов в стиле Comet . [9] Seaside может работать как с реализациями веб-серверов на основе Smalltalk, так и с другими реализациями, отличными от Smalltalk (Nginx, Apache).
За последние несколько лет некоторые лучшие практики получили широкое признание в области веб-разработки:
Сисайд намеренно нарушает все эти правила. Ави Брайант, тогда работавший в Dabble DB, в 2006 году назвал ее «еретической» структурой, утверждая, что этот осторожный и аргументированный отказ от общепринятых принципов веб-разработки привел к созданию очень эффективной модели разработки веб-приложений. [10]
Основная разработка Seaside реализована на Pharo Smalltalk. [11] Существуют порты для других диалектов Smalltalk. Первоначальная разработка Seaside велась на Squeak в начале 2000-х. Мишель Бани реализовал порты на VisualWorks через Seaside версии 2.7; Cincom Systems поддерживает Seaside как часть VisualWorks с начала 2008 года. Компания Instantiations объявила о поддержке Seaside в своей платформе VAST (VA Smalltalk) версии 8.0 в 2009 году. Платформа VAST продолжает поддерживать Seaside в своей последней версии. Эстебан Маринголо сохранил порт 2.8, а также некоторые другие дополнения (например, script.aculo.us ) для Dolphin Smalltalk X6. [12] Gemstone Systems реализовала порт на Gemstone/S . [13] Для GemStone был завершен порт 2.8, [14] а предварительная версия 3.0 работает на GNU Smalltalk 3.0a и более поздних версиях. [15]
Пакет веб-сервера в стандартной библиотеке Racket (язык программирования) использует очень похожую философию, также основанную на продолжениях. [16]
Многие проекты с открытым исходным кодом используют Seaside, вот некоторые из них:
Многие собственные проекты используют Seaside, вот некоторые из них:
{{cite web}}
: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )