Saltearse al contenido

Arquitectura de Zuno

Zuno está diseñado como un framework HTTP moderno, modular y de alto rendimiento para C++20. Su arquitectura se basa en una canalización de middlewares, un motor de ruteo eficiente y una integración directa con Asio para operaciones asincrónicas.


[Cliente HTTP]
┌──────────────┐
│ Servidor │ ←— socket TCP (Asio)
└──────────────┘
┌────────────────────────────┐
│ Middleware Pipeline │
└────────────────────────────┘
┌────────────────────────────┐
│ Motor de Ruteo │
└────────────────────────────┘
┌────────────────────────────┐
│ Controlador de Ruta │
└────────────────────────────┘
┌────────────────────────────┐
│ Respuesta HTTP │
└────────────────────────────┘

Zuno utiliza Asio como backend de red para manejar conexiones TCP de forma eficiente y no bloqueante. Cada conexión entrante se procesa en un bucle de eventos asincrónico.


Cada petición pasa por una cadena de middlewares antes de llegar al controlador final. Esto permite:

  • Autenticación
  • Logging (Coming soon)
  • CORS
  • Compresión
  • Limitación de tasa

Ejemplo:

app.use(cors());
app.use(rateLimit({ .max = 10 }));

Cada middleware recibe (Request&, Response&, Next) y puede decidir continuar o cortar la ejecución.


Zuno implementa un ruteador jerárquico que soporta:

  • Rutas estáticas (/about)
  • Rutas dinámicas (/users/:id)
  • Parámetros de consulta (?q=valor)
  • Agrupación modular de rutas

El ruteador convierte la URL en una estructura de coincidencia eficiente y despacha al controlador correspondiente.


Los controladores son funciones lambda que manejan la lógica de negocio:

app.get("/saludo/:nombre", [](Request& req, Response& res) {
res.send("Hola, " + req.params["nombre"]);
});

Pueden devolver texto plano, JSON, archivos o cualquier tipo de respuesta personalizada.


Zuno abstrae la respuesta HTTP con una API fluida:

res.status(200).json({
{ "mensaje", "Éxito" }
});

También puedes enviar archivos, redirecciones o encabezados personalizados.


Zuno está dividido en módulos reutilizables:

MóduloFunción principal
core/Servidor, ruteo, tipos base
extensions/Middlewares opcionales (CORS, TLS, etc.)
examples/Casos de uso listos para compilar
zuno/zuno.hppPunto de entrada unificado para el usuario

Zuno promueve buenas prácticas de seguridad:

  • TLS nativo con certificados
  • Middleware de autenticación
  • Limitación de tasa configurable
  • Encabezados seguros por defecto


Zuno combina simplicidad y potencia en una arquitectura moderna, pensada para desarrolladores que quieren control total sin sacrificar productividad.