21 noviembre, 2009

Persevere, Node.JS y HelmaNG

Se trata de tres servidores de aplicaciones basados en JavaScript. Cada uno de ellos tiene sus propias características que lo hacen apto para un tipo de solución particular:

Persevere 1.0


  • Proyecto perteneciente a la Dojo Foundation, autores del framework cliente de JavaScript
  • Usa una interfície basada en estándares: HTTP/REST, JSON-RPC, JSONPath, y canales REST
  • Está basado en el motor Rhino (Java) al igual que Helma
  • Ofrece almacenamiento persistente de datos JSON dinámicos (objetos, arrays y funciones)
  • Operaciones de creación, lectura, actualización y borrado a través de una interfície web HTTP/REST con JSON como formato
  • Ejecución remota de funciones JavaScript en el servidor usando JSON-RPC
  • Capacidad de consultas indexadas flexible y rápida mediante JSONQuery/JSONPath
  • Capacidades de monitorización basadas en Comet a través de canales HTTP con transporte Bayeux
  • Seguridad a nivel de objeto basada en reglas de datos y con gestión de usuarios
  • Soporte de Json Referencing y JSON Schema (Validación e integridad de datos)
  • Jerarquía de datos basada en clases para facilitar consultas y herencia
  • Arquitectura de fuentes de datos conectables: servicios web remotos, tablas SQL y archivos XML pueden ser usados como almacenes de datos
  • Versiones de objetos con histórico transaccional de estados de los registros

En definitiva, la idea de Persevere es ofrecer la mayor cantidad de opciones en el lado del servidor para almacenar los datos y ofrecerlos óptimamente a los clientes web, de forma que se pueda desplazar el peso de la aplicación web al cliente manteniendo en el servidor la seguridad y la persistencia de los datos. Ver documentación.

La siguiente versión estará basada en Pintura, que es una nueva abstracción del núcleo JavaScript de Persevere, de forma que respeta los estándares de JavaScript en el servidor (CommonJS y JSGI) para permitir el soporte de motores compatibles (V8, JSCore, y Spidermonkey).


Node.JS


Node.js es un framework de entrada/salida basado en eventos y construido sobre el motor de JavaScript de Google V8. Facilita la creación de aplicaciones escalables y altamente eficientes sin necesidad de saber sobre hilos, procesos, semáforos, depuración concurrente, ... gracias a que está basado en el mismo modelo de programación basada en eventos que Twisted de Python o EventMachine de Ruby.
La idea principal detrás de Node.js es la simplicidad. Aprovechando las funciones típicas callback de JavaScript (lanzadas cuando ocurre un evento) con las que cualquier programador está familiarizado, se ha implementado una tecnología revolucionaria basada en el potente motor V8. Las llamadas a la API son, generalmente, asíncronas, por lo que nunca bloquean la ejecución. Resulta fácil para principiantes generar aplicaciones complejas sin preocuparse de las complejidades típicas de aplicaciones concurrentes.

Por ejemplo, para implementar un servidor HTTP totalmente funcional sobre el puerto 8000 que responde a las peticiones con un documento "Hello World", harían falta ocho líneas de código perfectamente comprensible:

var sys = require("sys"),
   http = require("http");
http.createServer(function (request, response) {
  response.sendHeader(200, {"Content-Type": "text/plain"});
  response.sendBody("Hello World\n");
  response.finish();
}).listen(8000);
sys.puts("Server running at http://127.0.0.1:8000/");

En la llamada a la función http.createServer se pasa como parámetro la función callback que será llamada cuando se reciba una petición de conexión. Más simple imposible. De hecho Simon Willison ha cambiado en el último momento el asunto de su charla en Full Frontal '09 para hablar de los resultados que está obteniendo con esta revolucionaria herramienta.



HelmaNG


Es la última versión del más veterano de los servidores de aplicación basados en JavaScript. NG quiere decir Next Generation y es una versión de Helma empezada de cero, con un código Java mucho más pequeño y ligero (principalmente el código en tiempo de ejecución, la consola y el cargador de módulos y recursos). Sigue el estándar de interoperabilidad CommonJS.

Consta de un entorno de ejecución JavaScript basado en Rhino, un sistema de carga de módulos compatible con CommonJS, una consola interactiva, y una biblioteca implementada JavaScript que cubre funcionalidades básicas como extensiones a objetos predefinidos, entrada/salida de archivos, persistencia, tests unitarios, soporte HTTP de cliente y servidor y una framework web construida sobre los elementos anteriores y con código JavaScript 100%.
Helma sigue una filosofía de programación un tanto peculiar basada en objetos y similar al paradigma MVC, pero que puede resultar extremadamente eficaz una vez pasado el proceso de aprendizaje inicial. Su estructura modular permite mantener la aplicación dividida desde el principio según el modelo de objetos y las acciones que se permiten sobre éstos, lo que facilita mucho su crecimiento posterior. El equipo de programadores es principalmente centro-europeo, donde cuenta con una importante base de usuarios.

Publicar un comentario en la entrada

Últimos links en indiza.com