World Library  
Flag as Inappropriate
Email this Article

Seaside (software)

Article Id: WHEBN0006427179
Reproduction Date:

Title: Seaside (software)  
Author: World Heritage Encyclopedia
Language: English
Subject: Weblocks, Lift (web framework), Smalltalk, Comparison of web application frameworks, Nagare (web framework)
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Seaside (software)

Seaside
Seaside Logo
Developer(s) The Seaside Team
Stable release 3.1.3 / September 6, 2014 (2014-09-06)
Written in Smalltalk
Operating system Cross-platform
Type Web application framework
License MIT License
Website .stseaside

Seaside is a free and open-source web application framework for developing web applications in Smalltalk.

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 continuations to model multiple independent flows between different components.[1] Seaside is a continuation-based web application framework[2] based on the ability to manipulate the execution stack of some implementations of Smalltalk.

Key features

Seaside's implementation of continuations was an initial point of interest in its first several years of existence following its 2002 release. Continuations provide a mechanism for rollback and resumption; a useful provision for the web browser environment in which "refresh" and "back" buttons may interrupt the flow of processing. Continuation servers give the developer the ability to maintain state on the server in a scalable manner.[3] The subsequent improvement of web browser implementations of JavaScript since 2002 has made the continuations aspect of Seaside less significant, by allowing the client browser to better keep track of state.

A distinctive feature of Seaside is its integrated development environment, providing access to development tools and debugging support within an application. In development-mode, unhandled errors are reported to the web page; developers can access and alter the program code and state directly from the web page, allowing bug identification and fixing process to occur within an integrated development environment.[4]

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

Seaside is not template-oriented, and does not offer the generation or use of HTML templates; HTML markup is generated programmatically. (The Seaside-based Pier content-management framework does offer wiki-markup syntax for templating.) 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 separation of structure (markup) from content and presentation (CSS).[5] Seaside's combination of components, callbacks, and closures can significantly reduce the semantic gap between a complex workflow and its representation in code.[6]

Seaside supports Ajax through integration with script.aculo.us and jQuery. Seaside also supports Comet-style server-push technology.[7]

Philosophy

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

  • 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; Avi Bryant describes it as a 'heretical' framework. He argues[8] 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.

Ports

Although the main development of Seaside is implemented in Pharo,[9] there exist ports for other Smalltalk dialects. Michel Bany implemented ports to VisualWorks through Seaside version 2.7; Cincom supports Seaside as part of VisualWorks as of early 2008. Instantiations announced Seaside support in its VA Smalltalk version 8.0. As of February 2009 VA Smalltalk 8.0 is in beta. Esteban Maringolo maintained the 2.8 port, plus some other add-ons (such as script.aculo.us) for Dolphin Smalltalk X6.[10] Gemstone Systems implemented a port to Gemstone/S.[11] A port of 2.8 was completed for GemStone,[12] and a preliminary version of 3.0 runs on GNU Smalltalk 3.0a and later.[13]

Criticisms

  • Compared to other web development frameworks, Seaside is memory intensive. A single session could accumulate several hundred kilobytes of RAM. A later release of Seaside (2.8) significantly reduces this footprint (e.g. a formerly typical 200 KB footprint becomes 50 KB). Interesting discussion in http://forum.world.st/Seaside-memory-consumption-td97508.html.
  • Seaside does not follow Representational State Transfer (REST) by default. Instead Uniform Resource Locators (URLs) hold session key information, and meaningful URLs must be generated explicitly.

Open-source projects using it

Proprietary projects using it

  • Dabble DB - web-based database application[14]
  • Cmsbox - a Seaside-powered CMS which has been made available by netstyle.ch for the Swiss marketplace.

See also

References

  1. ^ Seaside — a Multiple Control Flow Web Application Framework
  2. ^ IBM DeveloperWorks: Crossing borders: Continuations, Web development, and Java programming
  3. ^ Seaside: A Flexible Environment for Building Dynamic Web Applications
  4. ^ Debugging Seaside Applications
  5. ^ Avi Bryant explains why Seaside doesn't use templates
  6. ^ Web Application Frameworks: A Comparative Study
  7. ^ Screencast: Seaside Comet Chat Application
  8. ^
  9. ^ "Seaside 2.9 is current implemented on Pharo that serves as a reference implementation."
  10. ^ Seaside for Dolphin Smalltalk blog
  11. ^ Seaside2.6g
  12. ^ Seaside2.8
  13. ^ Does Seaside run on GNU Smalltalk, GNU Smalltalk FAQ
  14. ^ Jon Udell article in InfoWorld

External links

  • Seaside homepage.
  • Dynamic Web Development with Seaside is an open book on the Seaside Web Framework.
  • The Seaside Tutorial describes step by step the development of a Seaside application.
  • Terse Guide to Seaside.
  • Video of Lukas Renggli's talk The Heretic Web Framework from the Studencki Festiwal Informatyczny in Cracow, March 2007, with PDF slides
  • Seaside for Cincom VisualWorks Smalltalk.
  • Comparison of Seaside and Rails.
  • Borges - Ruby port of Seaside 2.0.
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.