Un servidor web con Perl 6

Implementación básica de un servidor HTTP concurrente con Perl 6

Ramiro Encinas

sysadmin de UNICEF Comité Español

Febrero 2018

HTTP forma parte de la expansión actual del neocórtex más allá de su confinamiento

En 1945 Vannevar Bush publica ¿Cómo podríamos pensar?, el artículo que describe el concepto Memex

En 1960 Ted Nelson inicia el proyecto Xanadú, el primer proyecto que trata sobre Hipertexto con enlaces bidireccionales

En 1989 Tim Berners-Lee y su equipo crean el protocolo HTTP y el HTML

En 1990 el primer servidor HTTP corría CERN httpd
aka W3C httpd

Descripción general de HTTP


  • Protocolo de comunicación a nivel de aplicación orientado a hipermedia y utilizado por la WWW
  • Comunica a un cliente con un servidor mediante mensajes de solicitud y respuesta.
  • Sin control de estado.
  • Extensible mediante métodos de solicitud, códigos de error y cabeceras.
  • Negocia el formato MIME de la respuesta.

Concurrencia y Perl 6

Perl 6 normalmente prefiere construcciones que se compongan bien, resolviendo muchos problemas pequeños que permiten resolver problemas más grandes

Implementación del servidor con IO::Socket::Async de Perl 6


  • La clase IO::Socket::Async gestiona de forma asíncrona la entrada/salida de transmisiones de datos en sockets TCP y UDP.

  • Una transmisión llega a través de un Supply, éste asigna un hilo a la transmisión y lo gestiona de forma concurrente y componible.

Ejemplo

Wap6

A Perl 6 concurrent web application framework module.

Conclusiones


HTTP es un protocolo maduro, ágil y flexible, ideal para ofrecer cualquier servicio multimedia.

Perl 6 puede implementar fácilmente un servicio HTTP de alto nivel, concurrente y componible que permite olvidarse de toda la gestión asíncrona por compleja que sea.

¡Gracias!