Seaside — це вільне та відкрите програмне забезпечення для розробки вебзастосунків мовою Smalltalk. Складається з набору Smalltalk класів. Розробник може використовувати ці класи, а також розширювати їх на свій розсуд, для створення високодинамічних вебзастосунків, програм з потенційно складним потоком процесів і взаємодій з користувачем. Seaside робить веброзробку значно легшою, і допомагає будувати прості для розуміння застосунки, які легше обслуговувати.

Seaside
Файл:Seaside.png
Тип Каркас вебзастосунків
Розробник The Seaside Team
Стабільний випуск 3.0 (13 вересня 2010; 13 років тому (2010-09-13))
Операційна система Багатоплатформність
Мова програмування Smalltalk
Ліцензія MIT
Репозиторій github.com/SeasideSt/Seaside
Вебсайт seaside.st

Основні ідеї ред.

Seaside-застосунки будуються на основі поєднання незалежних компонент. Кожна компонента відповідає за власні візуалізацію, стан і потік процесів. Seaside дозволяє вільно поєднувати такі компоненти, створюючи високорозвинені і динамічні за стосунки. Найбільш вагомою рисою є те, що потік керування застосунку написаний звичайним Smalltalk.

Seaside часто описується як фреймворк-єретик, бо він справді відрізняється від інших. Наприклад, він не використовує шаблонів чи ретельно підібраних URL-адрес з чіткою і зрозумілим вмістом. Seaside не слідує REST за замовчуванням (Representational State Transfer, «передача стану подання» — підхід до архітектури мережевих протоколів, які забезпечують доступ до інформаційних ресурсів).

В Seaside URL-адреси зберігають ключову інформацію сесії. Їх вміст генерується автоматично з певним кодуванням. Якщо потрібні URL-адреси з чітким і зрозумілим вмістом, то їх потрібно створити та передати.

При використанні шаблонних систем (PHP, JSP, ASP, ColdFusion, і т. д.), логічна складова розкидана по багатьох файлах, що створює складність у підтримці додатку. Повторне використання (якщо таке взагалі можливе) часто ґрунтується на копіюванні файлів. Філософія шаблонних систем полягає у розподіленні обов'язків дизайнерів та програмістів. Це хороша ідея, що також підтримується Seaside. CSS використовується дизайнерами для опису зовнішнього вигляду компоненти, а розробники мають можливість програмно генерувати коректну XHTML розмітку.

Seaside легко вивчати і використовувати. Для прикладу, JSF (JavaServer Faces) вимагає від розробника знання таких технологій як Servlets, XML, JSP, конфігурація навігації за допомогою faces.config файлів і т. д. У Seaside розробник повинен знати тільки Smalltalk, який набагато компактніший і простіший для вивчення ніж, наприклад, Java. Seaside дозволяє сконцентруватися на поточній проблемі, а не на поєднанні технологій. Також Seaside забезпечує генерацію коректного XHTML коду.

Таким чином, деякі аспекти дизайну Seaside відрізняються від більшості основних фреймворків для вебзастосунків. У Seaside

  • стан сесії зберігається на сервері.
  • XHTML повністю генерується в Smalltalk. Там немає ніяких шаблонів або «серверних сторінок», хоча не важко побудувати такі речі і в Seaside.
  • можна використовувати функції зворотніх викликів для посилань і кнопок, а не слабо зв'язані посилання на сторінки і ідентифікатори запитів.
  • потік процесів у застосунку визначається на чистому Smalltalk, не потрібна жодна спеціальна мова або конфігураційні файли у форматі XML.

У сукупності ці особливості роблять роботу з Seaside майже аналогічною до написання десктопної програми, і навіть простішою, бо сервер забезпечує велику частину деталей роботи вебзастосунку.

Seaside підтримує Ajax завдяки інтеграції з script.aculo.us і jQuery. Seaside також підтримує Comet-стиль сервер-push технології (модель роботи, яка дозволяє реалізувати постійне HTTP-з'єднання і дає можливість відправляти дані з сервера за його ініціативою без додаткового запиту клієнта).

Приклад застосування ред.

Для побудови та налаштування тегів можна використати каскадні повідомлення Smalltalk, коли декілька повідомлень надходять до одного отримувача (тегу). Кожне таке повідомлення встановлює певні параметри тегу. Наприклад, щоб створити заголовок 3го рівня в Seaside:

  html heading
    level: 3;
    with: 'A third level heading'.

Що відповідає наступному HTML коду:

   <h3>A third level heading</h3>

Переваги ред.

  • достатній набір компонент і функцій зворотнього виклику;
  • підтримка послідовних взаємодій;
  • вбудований інтерфейс для відлагодження;
  • підтримка AJAX та інших технологій Веб 2.0.

Недоліки ред.

  • в порівнянні з іншими фреймворками для розробки вебзастосунків Seaside вимагає значних ресурсів пам'яті. Одна сесія може накопичувати кілька сотень кілобайт оперативної пам'яті. Хоча у найновіших версіях Seaside цю кількість вдалось суттєво зменшити.
  • Seaside не дотримується архітектури REST за замовчуванням, тому вся інформація про сесію зберігається у URL адресі, що робить URL позбавленою змісту для користувача.

Seaside сайти ред.

Наступні сайти створені з допомогою фреймворка Seaside:

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

Корисні посилання ред.