Header Ads Widget

Ticker

6/recent/ticker-posts

3 marcos para crear API con Rust

 


Originalmente un proyecto personal de Graydon Hoare de Mozilla, el desarrollo de Rust comenzó en 2006. Primero dijo Hello Worldluego de su anuncio oficial de Mozilla en 2010. Aunque Rust no ha disfrutado del crecimiento colosal de Python, los usuarios aman el lenguaje inmensamente. Rust encabezó la lista de clasificación de los "lenguajes de programación más queridos" de Stack Overflow en 2016 , 2017 y 2018 . Solo esperamos que se vuelva más popular, especialmente porque se está refinando continuamente.

Anteriormente evaluamos los pros y los contras de Rust y lo encontramos increíblemente útil. El lenguaje comparte muchas similitudes con C y C ++, mientras que ofrece modificaciones sintácticas esenciales propias. En consecuencia, los desarrolladores elogian a Rust por su desarrollo y rendimiento de código abierto. Esto lo convierte en un candidato ideal para la creación de API. A continuación, revisaremos tres excelentes marcos para crear API con Rust.

1. Cohete

"Rocket es un marco web para Rust que simplifica la escritura de aplicaciones web rápidas y seguras"

Construido con los principios básicos de Rust, Rocketes un excelente marco de código abierto para desarrolladores que buscan un conjunto de herramientas completo. Rocket incluye una gran cantidad de características preempaquetadas, pero es bastante extensible. Sergio Benítez lanzó Rocket públicamente en diciembre de 2016 y sigue siendo un contribuyente clave hasta la fecha. Rocket no parece tener una comunidad bulliciosa a través de IRC o proveniente de su sitio web. Sin embargo, el blog de noticias de Rocket ayuda a los desarrolladores a mantenerse al tanto de los cambios en curso. En consecuencia, su esfuerzo de desarrollo es fuerte. En el momento de escribir este artículo, 128 colaboradores de GitHub han ayudado al desarrollo de Rocket desde su lanzamiento y ha habido más de 1250 confirmaciones. Habiendo sido actualizado 45 veces después del lanzamiento inicial, la versión actual de Rust es v0.4. En promedio, se lanza una nueva versión de Rocket aproximadamente cada 18 días.

Beneficios

  • Como sugiere su homónimo, Rocket está diseñado para la velocidad con plantillas rápidas y transmisión de datos entrantes / salientes, que es independiente del tamaño de archivo
  • El proceso de solicitud-respuesta ocurre en solo tres pasos, enfatizando la validación de sonido, informes de errores personalizados y funciones simples de manejo arbitrario
  • La programación de seguridad de tipos garantiza que las solicitudes sigan rutas sucesivas y coincidentes hasta que se produzca o no la validación
  • El soporte de formularios es rico y la resolución de problemas es simple. Las solicitudes incorrectas no llaman a sus funciones, y los cambios de tipo simples ayudan a identificar la programación defectuosa
  • El soporte JSON se integra a través de SerializeDeserializeEl uso del FromDatarasgo asegura una fácil creación de valor por tipo
  • Solicite que los guardias bloqueen la ejecución de sus manipuladores si no se cumplen las condiciones predeterminadas. Los ApiKeyprotectores personalizables evitan operaciones sensibles innecesarias, imponiendo validaciones tanto de tipo como de encabezado de API

Inconvenientes

  • Rocket ha dependido de Rust nocturno y no se ejecuta en versiones estables del compilador Rust. Sin embargo, esta función está pendiente: la v0.5 está en desarrollo y agregará soporte para Rust estable
  • La compatibilidad con formularios de varias partes sigue siendo un poco torpe, lo que complica la carga y el envío de archivos. Nuevamente, se prevé un soporte mejorado para la versión 0.5
  • Puede ser complicado mantener todos los componentes de Rocket correctamente actualizados con el tiempo
  • Los cambios continuos en Rust todas las noches pueden causar cambios impredecibles e importantes

2. Actix-web

"El poderoso sistema de actores de rust y el marco web más divertido"

Creado para la velocidad y compatible con funciones modernas, Actix-web es un marco centrado en la creación segura de API. Fue construido para ser utilizable y ligero. Lanzado inicialmente en octubre de 2017 y mantenido por Nikolay Kim, Actix-web es compatible con el marco del actor Actix. Tiene comunidades activas de Gitter y Reddit, y las contribuciones de GitHub siempre son bienvenidas. Actix-web es de código abierto y tiene 108 colaboradores en GitHub. Con más de 2500 confirmaciones y 89 versiones, el marco está en continuo desarrollo. Microsoft usa Actix-web en algunas aplicaciones, aunque los detalles adicionales son confusos.

Beneficios

  • Admite los protocolos HTTP / 1.xy HTTP 2.0
  • Al igual que Rocket, admite la transmisión de datos al tiempo que agrega soporte de canalización, lo que reduce los tiempos de respuesta al empaquetar las solicitudes en una sola conexión TCP
  • Incluye soporte de cliente para el manejo de solicitudes asincrónicas, lo que facilita múltiples ejecuciones simultáneas sin contratiempos
  • Soporte de WebSockets tanto en el lado del cliente como en el del servidor
  • Los desarrolladores pueden crear rutas de solicitud personalizadas para facilitar el acceso a los recursos. Esto también permite una estructuración de URI más consistente
  • Actix-web puede servir activos tanto estáticos como dinámicos a través de OpenSSL o rustls
  • Uno de los marcos de Rust de evaluación comparativa más rápidos hasta la fecha, con un amplio rendimiento en bruto

Inconvenientes

  • Gran dependencia de las unsafeinstancias de código para permitir un mejor rendimiento, aunque esto se ha mitigado en versiones recientes
  • Actix-web puede ser más complicado que Rocket para comenzar, por ejemplo

3. Tower Web

Tower Web es un marco web rápido que tiene como objetivo eliminar el texto estándar.

Con un enfoque en la simplificación del desarrollo de API a través de la eliminación estándar, Tower Web es un marco de trabajo de Rust esbelto pero poderoso. Está construido sobre Tower, una biblioteca complementaria que contiene componentes de red útiles. Al igual que Actix-web se apoya en Actix, Tower Web hace lo mismo con Tower. También se basa en Tokio e Hyper, una plataforma de E / S sin bloqueo y un cliente HTTP, respectivamente. Como resultado, Tower Web es una plataforma completa lista para abordar el desarrollo de API de Rust. También es relativamente nuevo: Carl Lerche lanzó Tower Web en agosto de 2018. Actualmente encabeza los esfuerzos de desarrollo en GitHub, junto con 24 colaboradores. Desde su inicio, se ha actualizado 11 veces, aproximadamente una versión cada 22 días. Su versión actual es la v0.3.6.

Beneficios

  • Dado que Tower Web se basa en Tower, Tokio e Hyper, tiene una base sólida que ofrece un potencial futuro prometedor. A medida que estos componentes crecen, Tower Web puede alcanzar la paridad de funciones con marcos como Rocket
  • La asincronicidad completa permite que varios procesos se ejecuten simultáneamente, eliminando cuellos de botella
  • HTTP se separa de la lógica de su aplicación, eliminando la necesidad de repetición y reduciendo cruft
  • Tower Web es compatible con Rust estable, lo que significa que los cambios continuos a nightly no romperán su construcción

Inconvenientes

  • Dado que Tower Web es más nuevo, los desarrolladores todavía están esperando que se escriban componentes adicionales, como middleware
  • La documentación podría ser más completa

Comparación de casos de uso

Si desea estar a la vanguardia y diseñar aplicaciones web de conformidad con los estándares emergentes, Rocket es una excelente opción. Eso no significa que el marco vacile en otros escenarios, pero su dependencia actual de Rust nocturno genera preocupaciones de estabilidad. Debido a que Rocket no es asincrónico, solo puede manejar un número limitado de conexiones en un momento dado. En consecuencia, puede ser más adecuado para proyectos más pequeños, o al menos para aplicaciones web donde se minimizan las solicitudes activas. Sin embargo, Rocket es bastante experto en manejar grandes cantidades de datos. A medida que el marco madura, es muy posible que impulse algunos proyectos grandes y de alto perfil. Rocket elimina gran parte de las conjeturas de la ecuación para los usuarios más nuevos.

Las grandes ventajas de Actix-web se encuentran en dos áreas: gestión de actores y velocidad. Si está creando una aplicación web basada en cuentas (correo electrónico, servicios web con terminales SOAP), el marco realmente brilla. Este soporte de actor está disponible en otros marcos como Rocket, aunque la implementación de Actix-web es más elegante. Las compilaciones de API que dependen del protocolo WebSockets se combinarán armoniosamente con Actix-web. Si está tratando de exprimir el mayor rendimiento posible de sus servidores web, la baja sobrecarga del protocolo lo facilitará.

Para los desarrolladores que buscan escribir el código más sencillo posible, Tower Web es una opción fantástica. Se ha colocado un código repetitivo en el bloque de corte, lo que reduce el tiempo de producción. El código escrito dentro de Tower Web tiene un propósito, que realmente puede ayudar con proyectos más grandes. También es sencillo incorporar middleware en Tower Web, lo que simplifica la creación de API y promueve una mejor experiencia para el usuario final. Totalmente asincrónico, el marco también puede manejar una gran cantidad de solicitudes en paralelo. Los servicios populares construidos en torno a numerosas sesiones se beneficiarán significativamente de esto.


Publicar un comentario

0 Comentarios