name = Seaside
caption = Screenshot of a web application in development mode
collapsible = yes
developer = [http://www.seaside.st/community/contributors The Seaside Team]
latest release version = 2.8
latest release date = release date|2007|10|28
operating system =
programming language =
Web application framework
website = http://www.seaside.st/
Seaside provides a component architecture in which web pages are built as trees of individual, stateful components, each encapsulating a small portion of a page. Seaside uses
continuationsto model multiple independent flows between different components. [ [http://www.iam.unibe.ch/~scg/Archive/Papers/Duca04eSeaside.pdf Seaside — a Multiple Control Flow Web Application Framework] ] Seaside is a continuation-based web application framework [ [http://www-128.ibm.com/developerworks/java/library/j-cb03216/index.html IBM DeveloperWorks article] ] based on the ability to manipulate the execution stack of some implementations of Smalltalk.
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, [ [http://smallthought.com/avi/?p=14 Avi Bryant explains the value of continuations for web servers] ] and continuation servers give the developer the ability to maintain state on the server in a scalable manner [ [http://www.computer.org/portal/cms_docs_software/software/homepage/2007/S507/s5056.pdf Seaside: A Flexible Environment for Building Dynamic Web Applications] ] .
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. [ [http://www.seaside.st/Documentation/DebuggingSeasideApplications/ Debugging Seaside Applications] ]
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. (The Seaside-based Pier content-management framework adds wiki-markup syntax as a templating solution, however.) 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) [ [http://www.cincomsmalltalk.com/userblogs/avi/blogView?showComments=true&entry=3257728961 Avi Bryant explains why Seaside doesn't use templates] ] . Seaside's combination of components, callbacks, and closures can significantly reduce the semantic gap between a complex workflow and its representation in code [ [http://www.accursoft.co.uk/web/Conclusions.xhtml Web Application Frameworks: A Comparative Study] ] .
Seaside supports Ajax through
script.aculo.us. It also supports Comet style server-push technology [ [http://www.lukas-renggli.ch/smalltalk/seaside/videos/comet.mov Screencast: Seaside Comet Chat Application] ] .
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 the model from the presentation.
Seaside deliberately breaks all of these rules, indeed Avi Bryant describes it as a 'heretical' framework. He argues [ [http://conferences.oreillynet.com/cs/os2006/view/e_sess/8942 'Web Heresies: The Seaside Framework' Session notes, OSCON 2006] ] that this careful and reasoned rejection of the conventional wisdoms of web development has led to a very effective model for the development of web applications.
Although the main development of Seaside happens in
Squeakthere exist ports for other Smalltalk dialects. Michel Banydid regular ports to VisualWorksthrough Seaside version 2.7; Cincomis supporting Seaside as part of VisualWorksas of early 2008. Esteban Maringolomaintains the 2.8 port, plus some other add-ons (such as script.aculo.us) for Dolphin Smalltalk X6. [ [http://dolphinseaside.blogspot.com/ Seaside for Dolphin Smalltalk blog] ] . Gemstone Systemsis working on a port to Gemstone/S [ [http://lists.squeakfoundation.org/pipermail/seaside/2006-November/009886.html Seaside2.6g] ] .A port of 2.8 has been completed on GemStone [ [http://gemstonesoup.wordpress.com/2007/07/12/seaside-28-ported-to-gemstones/ Seaside2.8] ] , and preliminary version of 2.9 runs on GNU Smalltalk3.0a and later [ [http://smalltalk.gnu.org/faq/43 Does Seaside run on GNU Smalltalk] , GNU Smalltalk FAQ] .
* Compared to other web development frameworks, Seaside is memory intensive. A single session could accumulate several hundred kilobytes of RAM. The latest release of Seaside (2.8) significantly reduces this footprint (e.g. a formerly typical 200kb becomes 50kb).
* 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.
Open-source Projects using Seaside
* Magritte - a meta-description framework with a tight integration into Seaside
* Pier - a
content management systemand high level application framework for Seaside
* [http://adk.sourceforge.net ADK Project]
Commercial Projects using Seaside
Dabble DB- web-based database application [ [http://weblog.infoworld.com/udell/2006/10/31.html Jon Udell article in InfoWorld] ]
* [http://www.cmsbox.ch/ Cmsbox] - a Seaside-powered CMS which has been made available by [http://www.netstyle.ch netstyle.ch] for the Swiss marketplace.
* [http://auctomatic.com Auctomatic] - a web application to manage your inventory and ebay sales
List of web application frameworks
Content management framework
Comparison of web application frameworks
* [http://seaside.st Seaside] homepage.
* [http://homepage.mac.com/svc/ADayAtTheBeach/ Seaside] for Squeak Smalltalk.
* [http://onsmalltalk.com/programming/smalltalk/terse-guide-to-seaside/ Terse Guide] to Seaside.
* Video of Lukas Renggli's talk [http://video.google.com/videoplay?docid=1029369558328427746 The Heretic Web Framework] from the Studencki Festiwal Informatyczny in Cracow, March 2007, with [http://www.lukas-renggli.ch/smalltalk/seaside/heretic.pdf PDF slides]
* [http://www.cincomsmalltalk.com/blog/blogView?showComments=true&entry=3332584390 Seaside] for Cincom VisualWorks Smalltalk.
* [http://onsmalltalk.com/programming/smalltalk/rails-vs-seaside/ Comparison of Seaside and Rails] .
* [http://borges.rubyforge.org/ Borges] - Ruby port of Seaside 2.0.
Wikimedia Foundation. 2010.
Look at other dictionaries:
Seaside — ist der Name mehrerer Orte in den USA: Seaside (Florida) Seaside (Oregon) Seaside (Kalifornien) Ebenfalls wird mit dem Wort Seaside (Software) ein Framework zur Entwicklung von Webanwendungen in Smalltalk bezeichnet … Deutsch Wikipedia
Seaside — A seaside is the marine shoreline of a sea. The word may refer to one of several communities, including:* Seaside, California * Seaside, Florida * Seaside, Oregon * Seaside, Queens, a section of Rockaway Beach in New York City * Seaside Heights,… … Wikipedia
Mambo (software) — Mambo Developer(s) Mambo Foundation Inc. Discontinued 4.6.5  / June 26, 2008; 3 years ago (2008 06 26) Written in … Wikipedia
Pier (software) — Infobox Software name = Pier | caption = developer = Lukas Renggli latest release version = 1.0.10 latest release date = release date|2007|04|28 latest preview version = latest preview date = operating system = Cross platform genre = Content… … Wikipedia
Midgard (software) — For other uses, see Midgard (disambiguation). Midgard AJAX inline editing of content in Midgard … Wikipedia
Catalyst (software) — For the ATI graphic driver software, see AMD Catalyst. Original author(s) Sebastian Riedel Stable release 5.90001 / August 15, 2011; 2 months ago (2011 08 15) … Wikipedia
Horde (software) — Horde Application Framework Developer(s) The Horde Core Team Stable release 4.0 / April 5 … Wikipedia
Dancer (software) — For actual Dancing, see Dancer. Original author(s) Alexis Sukrieh Stable release 1.3072 / August 23, 2011; 2 months ago (2011 08 23) Written in Perl … Wikipedia
Magritte (software) — Infobox Software name = Magritte caption = developer = Lukas Renggli latest release version = 1.0.14 latest release date = April 28, 2007 latest preview version = latest preview date = operating system = Cross platform genre = license = MIT… … Wikipedia