En ingénierie logicielle , une architecture orientée ressources ( ROA ) est un style d' architecture logicielle et un paradigme de programmation pour la conception et le développement de logiciels sous forme d'interconnexion de ressources avec des interfaces « RESTful » . Ces ressources sont des composants logiciels ( morceaux de code discrets et/ou structures de données ) qui peuvent être réutilisés à des fins différentes. Les principes et directives de conception de la ROA sont utilisés pendant les phases de développement logiciel et d'intégration système .
REST, ou Representational State Transfer, décrit une série de contraintes architecturales qui illustrent la manière dont la conception du Web a émergé. Diverses implémentations concrètes de ces idées ont été créées au fil du temps, mais il a été difficile de discuter du style architectural REST sans brouiller les lignes entre les logiciels réels et les principes architecturaux qui les sous-tendent.
Dans le chapitre 5 de sa thèse, Roy Fielding décrit comment le World Wide Web est conçu pour être contraint par la série de limitations REST. Celles-ci sont encore assez abstraites et ont été interprétées de diverses manières lors de la conception de nouveaux frameworks, systèmes et sites Web. Dans le passé, des échanges houleux ont eu lieu sur la question de savoir si les architectures REST de type RPC sont RESTful.
Lignes directrices pour la clarification
L'architecture orientée ressources, telle que documentée par Leonard Richardson et Sam Ruby dans leur livre de 2007 RESTful Web Services , donne des conseils concrets sur des détails techniques spécifiques. Le fait de nommer ces collections de directives « architecture orientée ressources » peut permettre aux développeurs de discuter des avantages d'une architecture dans le contexte de l'architecture orientée ressources.
Certaines directives sont déjà communes au sein des plus grandes communautés REST, telles que : une application doit exposer plusieurs URI, une pour chaque ressource ; et le traitement des cookies représentant des identifiants dans une session côté serveur n'est pas RESTful.
Cadres existants
Richardson et Ruby discutent également de nombreux frameworks logiciels qui fournissent certaines ou de nombreuses fonctionnalités du ROA. Il s'agit notamment de /db, Django , TurboGears , Flask , EverRest, JBoss RESTEasy, JBoss Seam , Spring , Apache Wink, Jersey , NetKernel , Recess, Ruby on Rails , Symfony , Yii2, Play Framework , et API Platform.
Infrastructure Web
Alors que REST est un ensemble de lignes directrices architecturales applicables à divers types d'infrastructures informatiques, l'architecture orientée ressources (ROA) est uniquement couplée au Web. Cette architecture est donc surtout utile aux entreprises qui considèrent le Web comme la plate-forme informatique/de publication de choix.
La puissance du Web semble résider principalement dans sa capacité à réduire les barrières à l’entrée pour les utilisateurs humains qui ne sont peut-être pas très formés à l’utilisation des machines informatiques. En tant que tel, le Web élargit la portée du marché pour toute entreprise qui décide de publier une partie de son contenu au format électronique. Sur le Web, ce contenu publié est considéré comme une ressource Web .