Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

Seaside (software)

From Wikipedia, the free encyclopedia
Smalltalk web framework
Seaside
Seaside logo
Screenshot of a web application in development mode
DeveloperThe Seaside Team[1]
Initial release2002; 24 years ago (2002)
Stable release
3.5.9 / October 25, 2024; 15 months ago (2024-10-25)[2]
Written inSmalltalk
Operating systemCross-platform
PlatformIA-32,x86-64,ARM
Available inEnglish
TypeWeb framework
LicenseMIT
Websitewww.seaside.st Edit this on Wikidata
Repository

Seaside, an acronym that stands for “Squeak Enterprise Aubergines Server with Integrated Development Environment,” is computersoftware, aweb framework to developweb applications in the programming languageSmalltalk. It is distributed asfree and open-source software under anMIT License.

Seaside provides a component architecture in whichweb pages are built astrees of individual,stateful components, each encapsulating a small part of a page. Seaside usescontinuations to model multiple independent flows between different components.[3] Thus, it is a continuation-based web framework[4] based on the ability to manipulate the execution stack of some implementations ofSmalltalk.

Key features

[edit]

Although subsequent improvement of state handling in web browserJavaScript engines have meant this aspect is less important today,[citation needed] Seaside's method of handling of browser state (viacontinuations) was an initial point of interest in the first years following its 2002 release. This mechanism provides for rollback and resumption, resolving many common issues then occurring with running web applications, adequately sustaining the state on the server-side even when the web browser's 'back' and 'forward' or 'refresh' buttons are used. Continuation based servers give the developer the ability to maintain state on the server in a scalable manner.[5]

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 identifying and fixing processes to occur within anintegrated development environment (IDE).[6]

A Seaside application is a set of interacting components. Each one stores state across page views and canrender itself to theHTML 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 a programmer to describe the high-level logic of component interaction.

Seaside is not template-oriented, and does not offer generating or using HTML templates; HTMLmarkup is generated programmatically. (The Seaside-basedPier content-management framework does offer wiki-markup syntax for templating.) Seaside usescallbacks onclosures 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 (Cascading Style Sheets (CSS)).[7] Seaside's combination of components, callbacks, and closures can significantly reduce the semantic gap between a complex workflow and its representation in code.[8]

Seaside supportsAjax through integration withscript.aculo.us andjQuery. Seaside also supportsComet-style server-push technology.[9]Seaside can work with either Smalltalk-based web server implementations or other non-Smalltalk ones (Nginx, Apache).

Philosophy

[edit]

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 meaningfulURLs.
  • Use templates to separate the model from the presentation.

Seaside deliberately breaks all of these rules. Avi Bryant, then of Dabble DB, in 2006 described it as a 'heretical' framework, arguing that this careful and reasoned rejection of the conventional wisdoms of web development led to a very effective model for developing web applications.[10]

Ports

[edit]

The main development of Seaside is implemented inPharo Smalltalk.[11] Ports for other Smalltalk dialects exist.The original development of Seaside was done onSqueak in the early 2000s.Michel Bany implemented ports toVisualWorks through Seaside version 2.7;Cincom Systems supports Seaside as part ofVisualWorks as of early 2008. Instantiations announced Seaside support in its VAST (VA Smalltalk) Platform version 8.0 in 2009. The VAST Platform has continued to support Seaside through its latest version. Esteban Maringolo maintained the 2.8 port, plus some other add-ons (such asscript.aculo.us) forDolphin Smalltalk X6.[12]Gemstone Systems implemented a port toGemstone/S.[13]A port of 2.8 was completed for GemStone,[14] and a preliminary version of 3.0 runs onGNU Smalltalk 3.0a and later.[15]

The web server package in the standard library ofRacket (Programming language) uses a very similar philosophy, also based on continuations.[16]

Criticisms

[edit]
  • Compared to otherweb frameworks, Seaside is memory intensive. Onesession could accumulate several hundred kilobytes of RAM. A later release, version 2.8, significantly reduces this size (e.g., a formerly typical 200 KB size becomes 50 KB).
  • Seaside does not followrepresentational 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

[edit]

Many open-source projects use Seaside, some of which are:

  • Magritte – a meta-description framework with a tight integration into Seaside
  • Pier – acontent management system and high level application framework for Seaside
  • ADK Project

Proprietary projects using it

[edit]

Many proprietary projects use Seaside, some of which are:

See also

[edit]

References

[edit]
  1. ^The Seaside Team
  2. ^"Releases · SeasideSt/Seaside".GitHub.
  3. ^Seaside – a Multiple Control Flow Web Application Framework
  4. ^IBM DeveloperWorks: Crossing borders: Continuations, Web development, Java programming
  5. ^Seaside: A Flexible Environment for Building Dynamic Web Applications
  6. ^Debugging Seaside Applications
  7. ^Avi Bryant explains why Seaside doesn't use templates
  8. ^Web Application Frameworks: A Comparative Study
  9. ^Screencast: Seaside Comet Chat Application
  10. ^"'Web Heresies: The Seaside Framework' Session notes, OSCON 2006". Archived from the original on 2014-08-30.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  11. ^"Seaside 2.9 is current implemented on Pharo that serves as a reference implementation."
  12. ^Seaside for Dolphin Smalltalk blog
  13. ^Seaside2.6g
  14. ^Seaside 2.8
  15. ^Does Seaside run on GNU Smalltalk, GNU Smalltalk FAQ
  16. ^"Continue: Web Applications in Racket".
  17. ^Jon Udell article in InfoWorldArchived 2007-02-12 at theWayback Machine

External links

[edit]
Smalltalk programming language
Software
Implementations
Major
Dialects
Virtual realityplatforms
Graphical user interfaces
Workstation
Community
Business
People
Designers
  • Italics= discontinued
  • ° =Open-source software
    BookCategory
  • .NET
    C++
    ColdFusion
    Common Lisp
    Haskell
    Java
    JavaScript
    Back end
    Server-side
    Full-stack
    Front end
    Client-side
    Perl
    PHP
    Python
    Ruby
    Rust
    Scala
    Smalltalk
    Other languages
    Retrieved from "https://en.wikipedia.org/w/index.php?title=Seaside_(software)&oldid=1327816740"
    Categories:
    Hidden categories:

    [8]ページ先頭

    ©2009-2026 Movatter.jp