Seaside , acrónimo de “Squeak Enterprise Aubergines Server with Integrated Development Environment”, es un software informático , un framework web para desarrollar aplicaciones web en el lenguaje de programación Smalltalk . Se distribuye como software libre y de código abierto bajo una licencia MIT .
Seaside ofrece una arquitectura de componentes en la que las páginas web se construyen como árboles de componentes individuales con estado , cada uno de los cuales encapsula una pequeña parte de una página. Seaside utiliza continuaciones para modelar múltiples flujos independientes entre diferentes componentes. [3] Por lo tanto, es un marco web basado en continuaciones [4] basado en la capacidad de manipular la pila de ejecución de algunas implementaciones de Smalltalk .
Aunque las mejoras posteriores en el manejo del estado en los motores JavaScript de los navegadores web han hecho que este aspecto sea menos importante hoy en día, [ cita requerida ] el método de manejo del estado del navegador de Seaside (a través de continuaciones ) fue un punto de interés inicial en los primeros años posteriores a su lanzamiento en 2002. Este mecanismo permite la reversión y reanudación, resolviendo muchos problemas comunes que ocurrían entonces con la ejecución de aplicaciones web, manteniendo adecuadamente el estado en el lado del servidor incluso cuando se utilizan los botones "atrás" y "adelante" o "actualizar" del navegador web. Los servidores basados en continuaciones le dan al desarrollador la capacidad de mantener el estado en el servidor de manera escalable. [5]
Una característica distintiva de Seaside es su entorno de desarrollo integrado, que proporciona acceso a herramientas de desarrollo y soporte de depuración dentro de una aplicación. En el modo de desarrollo, los errores no controlados se informan a la página web; los desarrolladores pueden acceder y modificar el código y el estado del programa directamente desde la página web, lo que permite que los procesos de identificación y reparación de errores se realicen dentro de un entorno de desarrollo integrado (IDE). [6]
Una aplicación Seaside es un conjunto de componentes que interactúan entre sí. Cada uno almacena el estado en las vistas de página y puede mostrarse a sí mismo en el flujo HTML . Por lo tanto, es sencillo escribir un componente una vez y luego reutilizarlo en otra parte de una aplicación. Seaside también admite el concepto de tareas, que permiten a un programador describir la lógica de alto nivel de la interacción de los componentes.
Seaside no está orientado a plantillas y no ofrece la posibilidad de generar o usar plantillas HTML; el marcado HTML se genera mediante programación. (El marco de gestión de contenido Pier basado en Seaside ofrece sintaxis de marcado wiki para la creación de plantillas). Seaside utiliza devoluciones de llamadas en los cierres para especificar las acciones que se deben realizar al hacer clic en un enlace o enviar un formulario. Los desarrolladores y usuarios de Seaside argumentan que esto ayuda a imponer la separación de la estructura (marcado) del contenido y la presentación ( Hojas de estilo en cascada (CSS)). [7] La combinación de componentes, devoluciones de llamadas y cierres de Seaside puede reducir significativamente la brecha semántica entre un flujo de trabajo complejo y su representación en código. [8]
Seaside es compatible con Ajax a través de la integración con script.aculo.us y jQuery . Seaside también es compatible con la tecnología server-push de estilo Comet . [9] Seaside puede funcionar con implementaciones de servidor web basadas en Smalltalk u otras que no sean Smalltalk (Nginx, Apache).
En los últimos años, algunas prácticas recomendadas han llegado a ser ampliamente aceptadas en el campo del desarrollo web:
Seaside rompe deliberadamente todas estas reglas. Avi Bryant, que en aquel entonces trabajaba en Dabble DB, lo describió en 2006 como un marco de trabajo "herético", argumentando que este rechazo cuidadoso y razonado de las creencias convencionales sobre el desarrollo web condujo a un modelo muy eficaz para desarrollar aplicaciones web. [10]
El desarrollo principal de Seaside se implementa en Pharo Smalltalk. [11] Existen puertos para otros dialectos de Smalltalk. El desarrollo original de Seaside se realizó en Squeak a principios de la década de 2000. Michel Bany implementó puertos para VisualWorks a través de la versión 2.7 de Seaside; Cincom Systems admite Seaside como parte de VisualWorks a principios de 2008. Instantiations anunció el soporte de Seaside en su plataforma VAST (VA Smalltalk) versión 8.0 en 2009. La plataforma VAST ha seguido admitiendo Seaside hasta su última versión. Esteban Maringolo mantuvo el puerto 2.8, además de algunos otros complementos (como script.aculo.us ) para Dolphin Smalltalk X6. [12] Gemstone Systems implementó un puerto para Gemstone/S . [13] Se completó un puerto de 2.8 para GemStone, [14] y una versión preliminar de 3.0 se ejecuta en GNU Smalltalk 3.0a y posteriores. [15]
El paquete de servidor web en la biblioteca estándar de Racket (lenguaje de programación) utiliza una filosofía muy similar, también basada en continuaciones. [16]
Muchos proyectos de código abierto utilizan Seaside, algunos de los cuales son:
Muchos proyectos propietarios utilizan Seaside, algunos de los cuales son:
{{cite web}}
: CS1 maint: bot: estado de URL original desconocido ( enlace )