En ingeniería de software , una arquitectura orientada a recursos ( ROA ) es un estilo de arquitectura de software y un paradigma de programación para el diseño y desarrollo de software de apoyo en forma de interconexión de recursos con interfaces " RESTful " . Estos recursos son componentes de software (fragmentos discretos de código y/o estructuras de datos ) que se pueden reutilizar para diferentes propósitos. Los principios y pautas de diseño de ROA se utilizan durante las fases de desarrollo de software e integración de sistemas .
REST, o Representational State Transfer, describe una serie de restricciones arquitectónicas que ejemplifican cómo surgió el diseño de la web. [1] A lo largo del tiempo se han creado varias implementaciones concretas de estas ideas, pero ha sido difícil discutir el estilo arquitectónico REST sin difuminar las líneas entre el software real y los principios arquitectónicos detrás de él.
En el capítulo 5 de su tesis, Roy Fielding documenta cómo la World Wide Web está diseñada para estar restringida por la serie de limitaciones REST. Estas son todavía bastante abstractas y han sido interpretadas de diversas maneras al diseñar nuevos marcos, sistemas y sitios web. En el pasado, se han producido acalorados debates sobre si las arquitecturas REST de estilo RPC son RESTful. [1] [2]
Pautas para la aclaración
La arquitectura orientada a recursos, tal como la documentaron Leonard Richardson y Sam Ruby en su libro de 2007 RESTful Web Services [3] , brinda asesoramiento concreto sobre detalles técnicos específicos. Denominar a estas colecciones de pautas "Arquitectura orientada a recursos" puede permitir a los desarrolladores discutir los beneficios de una arquitectura en el contexto de ROA.
Algunas pautas ya son comunes dentro de las comunidades REST más grandes, tales como: que una aplicación debe exponer muchos URI, uno para cada recurso; y que procesar cookies que representan ID en una sesión del lado del servidor no es RESTful.
Marcos existentes
Richardson y Ruby también analizan muchos marcos de software que proporcionan algunas o muchas de las características del ROA. Estos incluyen /db, [4] Django , TurboGears , Flask , EverRest, [5] JBoss RESTEasy, [6] JBoss Seam , Spring , [7] Apache Wink, [8] Jersey , NetKernel , Recess, [9] Ruby on Rails , Symfony , Yii2, [10] Play Framework , [11] y API Platform. [12]
Infraestructura web
Si bien REST es un conjunto de pautas arquitectónicas aplicables a varios tipos de infraestructuras informáticas, la arquitectura orientada a recursos (ROA) solo se aplica a la web. Por lo tanto, esta arquitectura es útil principalmente para las empresas que consideran la web como la plataforma informática y de publicación preferida.
El poder de la web parece residir principalmente en su capacidad de reducir las barreras de entrada para usuarios humanos que pueden no estar altamente capacitados en el uso de maquinaria informática. [ dudoso – discutir ] Como tal, la web amplía el alcance del mercado para cualquier empresa que decida publicar parte de su contenido en formato electrónico. En la web, dicho contenido publicado se considera un recurso web .
Referencias
- ^ El capítulo 5 de la tesis de Fielding es "Transferencia de Estado Representacional (REST)".
- ^ Fielding, Roy T.; Taylor, Richard N. (mayo de 2002), "Diseño basado en principios de la arquitectura web moderna" (PDF) , ACM Transactions on Internet Technology , 2 (2): 115–150, doi :10.1145/514183.514185, ISSN 1533-5399
- ^ Richardson y Ruby 2007.
- ^ "API on the Fly™ - Agregue automáticamente API REST a sus bases de datos". SlashDB .
- ^ "Archivo de código de Google: almacenamiento a largo plazo para alojamiento de proyectos de código de Google". code.google.com .
- ^ "RESTEasy - Comunidad JBoss". resteasy.github.io .
- ^ "Tutorial de Spring REST".
- ^ "Índice". wink.apache.org .
- ^ "recessframework.org". ww12.recessframework.org .
- ^ "Marco Yii". Marco Yii .
- ^ "Play Framework: crea aplicaciones web modernas y escalables con Java y Scala". www.playframework.com .
- ^ "API Platform - Marco REST y GraphQL para crear proyectos modernos basados en API en PHP". api-platform.com .
Bibliografía
- Richardson, Leonard; Ruby, Sam (mayo de 2007). Servicios web RESTful . O'Reilly Media . ISBN. 978-0-596-52926-0.
- Lucchi, R.; Millot, M.; Elfers, C. (2008). Arquitectura orientada a recursos y REST (PDF) . Investigación científica y técnica. Luxemburgo: Oficina de Publicaciones Oficiales de las Comunidades Europeas . doi :10.2788/80035. ISBN 978-92-79-09320-3. ISSN 1018-5593.