LeMagIT.fr

https://www.lemagit.fr/conseil/SOAP-ou-REST-comment-bien-choisir

SOAP ou REST : comment bien choisir

par Swati Dhingra

« Je dois mettre à jour ma base de données d’inventaire locale avec les informations des mes nombreux fournisseurs. Ces derniers permettent de s’interfacer avec des services Web. L’application n’ayant pas de composant côté serveur (il s’agit d’une client qui dialogue directement avec la base), est-il possible de consommer ces services Web directement depuis mon application ?

Vous avez déjà dû vous poser cette question. Ou même vous interroger sur une éventuelle solution à ce genre de problème. Jusqu’alors nous étions plutôt familier avec le fait de consommer un services Web qui rapporte les données, extraites de plusieurs sources, vers l’application.

Il existe une approche différente : la base de données agit comme le consommateur du service, et non pas, comme habituellement, comme le fournisseur de service. Cet article explique comment invoquer un service Web via les procédures stockées.

Les services Web

Globalement, un service Web est une méthode de communication entre deux applications ou appareils électroniques, via le Web. Il existe deux types de services Web: Simple Object Access Protocol (SOAP) et Representational State Transfer (REST).

SOAP est une spécification d’un protocole de communication standard (un ensemble de règles) pour l’ échange de messages XML. SOAP repose sur différents protocoles de transport, tels que HTTP et SMTP. L’usage du protocole standard HTTP permet au modèle SOAP de passer les paresseux et les proxies sans avoir à modifier le protocole. SOAP peut parfois être plus lent que des technologies middleware, comme CORBA ou ICE, à cause notamment du coté verbeux du format XML.

REST, quant à lui, décrit un ensemble de principes architecturaux par lesquels les données sont transmises sur une interface standard (telle que HTTP). REST ne contient une couche supplémentaire de messages et s’intéresse davantage aux règles de conception de services sans état (stateless). Un client accède à la ressource via un URI unique et une représentation de la ressources est ensuite retournée. Avec chaque nouvelle représentation de la ressource, on dit que le client transfère l’état. En accédant aux ressources RESTful avec le protocole HTTP, l’URL de la ressource sert d’identifiant de la ressource et GET, PUT, DELETE, POST et HEAD sont les opérations standard HTTP à appliquer sur cette ressource.

 

REST vs SOAP

Plusieurs facteurs doivent être pris en compte lorsqu’on choisit un type particulier de service Web, soit entre SOAP et REST. Ce qui suit dresse un inventaire des fonctions de chaque service Web, basé selon ma propre expérience personnelle.

REST

SOAP

Pour résumer, si vous publiez une API complexe vers l’extérieur, SOAP vous sera plus utile. Mais pour quelque chose avec une courbe d’apprentissage rapide, des transactions simples et des résultats rapides, ma préférence va à REST.

Invoquer un service Web via les procédures stockées de la base Oracle

Consommer un service Web via les procédures stockées d’une base de données permet aux utilisateurs de mettre à jour une base avec des informations issues de sources différentes. Les utilisateurs peuvent également programmer une opération à un rythme régulier pour obtenir les données à jour.

Oracle propose un module « utl_http » pour cela. Vous trouverez ci-dessous un exemple où l’appel au service Web est effectué depuis la base de données.

Les problèmes récurrents lorsqu’on invoque les services Web

Parfois, même après avoir fait correctement effectué la procédure stockée pour appeler le service Web, la procédure ne fonctionne pas. Retrouvez ci-dessous une compilation des erreurs intervenues lors de l’exécution de procédures stockées pour invoquer services Web. Les solutions sont également proposées.

Problème 1 : "ORA-25293 : HTTP request failed" , lors de la compilation de la procédure

Solution: Suivre les étapes ci-dessous pour corriger

Problème 2: lorsque la procédure stockée qui appelle de service Web renvoie "Network access denied » lors de l’appel

Solution: Ajouter l’URL du service Web à la liste des accès.

IL existe bien d’autres moyens pour invoquer les services, comme via Jdeveloper ou le package Oracle UTL_DWBS. D’autres options seront également proposées dans les prochaines versions d’Oracle pour la base puisse agir comme à la fois un consommateur et un fournisseur.

23 oct. 2014

All Rights Reserved, Copyright 2007 - 2025, TechTarget | Read our Privacy Statement