Статьи

OSCON 2006: Веб-ереси: Приморские рамки

Avi Bryant имеет сомнительное отличие, будучи одним из немногих вундеркиндов с большим интересом к Smalltalk, и создал среду разработки веб-приложений, которая подходит именно ему. Эта структура — Приморская . Как выясняется, Seaside также ломает многие общепринятые взгляды, которыми придерживаются многие другие веб-фреймворки, и именно на этих «ереси» Брайант сосредоточился в этом выступлении.

Первое из правил, нарушенных Seaside, заключается в том, что веб-дизайнеры несут ответственность за создание HTML-кода. Многие другие фреймворки идут на многое, чтобы предоставить сложные системы шаблонов, которые позволяют разработчикам и дизайнерам работать в тандеме над HTML-приложением, не наступая друг другу на ноги (теоретически). Seaside отказывается от этого подхода и генерирует весь HTML-код из кода Smalltalk в приложении, основываясь на теории, что, если генерируемый HTML-код является семантически значимым, все, что действительно нужно дизайнеру, это написать код CSS, который стилизует HTML ,

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

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

Опять же, это имеет освобождающие последствия. Сеансы могут содержать сумасшедшие вещи, такие как замыкания или даже продолжения — это означает, что код, отвечающий на запрос, может эффективно «приостановить саму себя», сохранить свое состояние (контекст выполнения) в сеансе и отправить ответ браузеру, который запрашивает пользователя. для некоторой информации. Когда следующий запрос поступает с требуемой информацией, контекст выполнения извлекается из сеанса, и код продолжает выполняться там, где он остановился. Внезапно рабочие процессы многостраничных форм становятся тривиальными не только для реализации, но и для изменения (скажем, путем изменения порядка шагов).

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

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