Seaside (software)

From Wikipedia, the free encyclopedia

Seaside
Developer: Avi Bryant
Latest release: 2.7 / February 23, 2007
OS: Cross-platform
Use: Web application framework
License: MIT License
Website: www.seaside.st

Seaside is an open source web application framework for developing web applications in Smalltalk.

Seaside provides a component architecture. It lets you build a page as a tree of individual, stateful components, each encapsulating a small portion of a page. Seaside uses continuations to model multiple independent flows between different components.[1] Seaside is the most widely used continuation based web application framework according to IBM DeveloperWorks[2] and has been downloaded more than 200,000 times.[3]

Contents

[edit] Key features

It is Seaside's implementation of continuations that makes it of particular interest; continuations provide a mechanism for rollback and resumption. This is essential in a web browser environment where "refresh" and "back" buttons may interrupt the flow of processing,[4] and continuation servers give the developer the ability to maintain state on the server in a scalable manner.

Another distinctive feature of Seaside is that it comes with an integrated development environment, providing access to development tools and debugging support from within the applications. In development mode, unhandled errors are reported to the web page, and developers can access and alter the program code and state directly from the web page, allowing the bug identification and fixing process to happen in an integrated environment.[5]

A Seaside application is a collection of interacting components. Each component stores state across page views and can "render" itself to the HTML stream. Because of this setup, it is straightforward to write a component once and then reuse it elsewhere. Seaside also supports the notion of tasks, which allow the programmer to describe the high-level logic of how components interact.

Seaside does not come with any built-in tools to support the generation or use of HTML templates; HTML markup is generated programmatically. Seaside uses callbacks on closures to specify actions to be taken when clicking on a link or submitting a form. The developers and users of Seaside argue that this helps enforce the good discipline of separating structure (markup) from content and presentation (CSS).[6]

Seaside supports Ajax through script.aculo.us. It also supports Comet style server-push technology.

[edit] Philosophy of Seaside

Over the last few years, some best practices have come to be widely accepted in the web development world:

  • Share as little state as possible.
  • Use clean, carefully chosen, and meaningful URLs.
  • Use templates to separate your model from your presentation.

Seaside deliberately breaks all of these rules, indeed Avi Bryant describes it as a 'heretical' framework. He argues[7] that this careful and reasoned rejection of the conventional wisdoms of web development has lead to a very effective model for the development of web applications.

[edit] Ports

Althought the main development of Seaside happens in Squeak there exist ports for other Smalltalk dialects. Michel Bany does regular ports to VisualWorks. Esteban Maringolo did original porting attempts to Dolphin Smalltalk but later Object Works hired Avi Bryant to do a port. Nowadays Esteban Maringolo is working on a port of version 2.7 [8]. Gemstone Systems is working on a port to Gemstone/S [9]. Ambrai said they hope to have a port for Ambrai Smalltalk soon after the final release [10]

[edit] Criticisms

  • Compared to other web development frameworks, Seaside is memory intensive. A single session can accumulate several hundred kilobytes of RAM.
  • Seaside does not follow REST by default. Instead URLs hold session key information, and meaningful URLs have to be generated explicitly.
  • Documentation is sparse, scattered and often outdated. It has to be collected from blog posts, tutorials and mailing list posts.

[edit] Projects using Seaside

[edit] References

  1. ^ Seaside — a Multiple Control Flow Web Application Framework
  2. ^ IBM DeveloperWorks article
  3. ^ Over 200,000 downloads recorded for Seaside
  4. ^ Avi Bryant explains the value of continuations for web servers
  5. ^ Debugging Seaside Applications
  6. ^ Avi Bryant explains why Seaside doesn't use templates
  7. ^ 'Web Heresies: The Seaside Framework' Session notes, OSCON 2006
  8. ^ Seaside 2.7 on its way
  9. ^ Seaside2.6g
  10. ^ Seaside forAmbrai and misc...
  11. ^ Jon Udell article in InfoWorld

[edit] External links

In other languages