REST es un enfoque arquitectónico y significa que un sistema RESTful tiene las siguientes propiedades:
- Es cliente / servidor: la lógica empresarial se desacopla de la presentación. Para que pueda cambiar uno sin afectar al otro. Las desventajas , agrega latencia insignificante, pero a quién le importa, la web es la plataforma y todo es cliente / servidor.
- No tiene estado: todos los mensajes intercambiados entre el cliente y el servidor tienen todo el contexto necesario para saber qué hacer con el mensaje. Esta visibilidad tiene varios beneficios: puede enrutar un mensaje a donde quiera, dependiendo de su contenido y cualquier servidor puede atender una solicitud. Así que puede escalar su servidor creando varias instancias del mismo. No necesita enviar todos los mensajes del mismo cliente o usuario al mismo servidor. Y si desea supertunear el back-end, puede enrutar mensajes a diferentes servidores dependiendo del mensaje. Por ejemplo, tener una solicitud intensiva de CPU para un servidor y una memoria intensiva para otro. Los contras : el cliente está enviando todos los mensajes con información redundante. Esto agrega ancho de banda y nuevamente, latencia insignificante.
- Se puede almacenar en caché, por lo que si estaba preocupado por la latencia, guarda las respuestas de almacenamiento en caché de ancho de banda del servidor.
- Tiene una interfaz uniforme basada en hipermedia (ya sabes, esa cosa de HATEOAS). Lo mejor de esto es que puede mejorar considerablemente el desacoplamiento entre el cliente y el servidor. Si las respuestas del servidor contienen hipermedia para todos los recursos referenciados y las acciones disponibles dentro del contexto de la última solicitud, el cliente no necesita saber mucho sobre el servidor sino un punto de entrada y algunas convenciones sobre el hipermedia. Implementado correctamente, puede cambiar muchas cosas en el lado del servidor sin tener que volver a escribir una sola línea en el cliente.
- Y finalmente, está en capas, como una cebolla. Puede colocar varias capas de componentes entre el cliente y el servidor, para fines de enrutamiento, equilibrio de carga, almacenamiento en caché o lo que necesite. Por supuesto, agrega latencia pero también mucha flexibilidad. Y si cambia una capa, solo la capa anterior podría verse afectada, por lo que la propagación de los efectos de cambio es limitada.
En general, los únicos inconvenientes están relacionados con la latencia en los tiempos de procesamiento de solicitudes y el uso de ancho de banda. Pero es una gran arquitectura de propósito general que proporciona:
- gran flexibilidad
- menores costos de mantenimiento
- alta escalabilidad
- sencillez
- ¿Redmine también sirve como una buena herramienta de seguimiento de errores o problemas para proyectos?
- ¿Cuáles son los flujos de trabajo óptimos para implementar la aplicación web?
- ¿Qué marco web no me hace implementar el modelo y las capas GUI por separado?
- ¿Qué marco debo elegir para desarrollar una aplicación web y por qué?
- ¿Cuál es la mejor manera de implementar actualizaciones automáticas para una aplicación que se implementa localmente en las ubicaciones de los clientes?