Saltar al contenido principal

Notas

Axum

  • Framework web en Rust enfocado en ergonomía y modularidad
  • Desarrollo de APIs RESTful y servicios web con alta performance
  • Combina componentes del ecosistema Tokio (Hyper, Tower) con una API intuitiva

Tokio

  • Runtime asíncrono para Rust que permite operaciones concurrentes sin bloqueo
  • Función clave: Ejecuta tareas asíncronas eficientemente utilizando un modelo de programación basado en async/await
  • Caso de uso: Operaciones intensivas de E/S (APIs, bases de datos, sistemas de archivos)
  • Alternativas:
    • async-std: API similar a la biblioteca estándar pero asíncrona
    • smol: Runtime más ligero con menor sobrecarga

Hyper

  • Implementación HTTP/1.1 y HTTP/2 de bajo nivel para Rust
  • Función clave: Parseo y serialización eficiente del protocolo HTTP
  • Caso de uso: Base para construir clientes o servidores HTTP personalizados
  • Alternativas:
    • reqwest: Cliente HTTP de alto nivel (construido sobre Hyper)
    • tiny_http: Para servidores HTTP simples y síncronos
    • actix-web: Framework completo con su propio motor HTTP

Tower

  • Biblioteca para construir servicios de red componibles
  • Función clave: Define la abstracción Service para procesar solicitudes y producir respuestas
  • Caso de uso: Crear middleware reutilizable y componible para aplicaciones de red
  • Concepto central: Servicios que se pueden componer en capas (middleware pattern)

Tower HTTP

  • Implementaciones específicas de Tower para aplicaciones HTTP
  • Función clave: Proporciona middleware común para aplicaciones web (compresión, CORS, autenticación)
  • Caso de uso: Extender funcionalidad HTTP sin reimplementar componentes comunes

Relaciones y jerarquía

  1. Tokio (base): Proporciona asincronía y gestión de tareas
  2. Hyper (sobre Tokio): Implementa el protocolo HTTP
  3. Tower (independiente): Define abstracciones para servicios
  4. Tower HTTP (combina Tower y Hyper): Middleware HTTP específico
  5. Axum (nivel superior): Unifica todo con una API ergonómica para desarrolladores