web-dev-qa-db-fra.com

Comparez et contrastez REST et SOAP services Web??)

Je me rends compte actuellement que la même chose utilise à la fois le protocole Internet (HTTP) pour échanger des données entre consommateur et fournisseur.

La différence est:

  1. SOAP est un protocole de message basé sur XML, tandis que REST est un style architectural
  2. SOAP utilise WSDL pour la communication entre le consommateur et le fournisseur, alors que REST utilise simplement XML ou JSON pour envoyer et recevoir des données
  3. SOAP appelle les services en appelant la méthode RPC, REST appelle simplement les services via le chemin de l'URL
  4. SOAP ne renvoie pas de résultat lisible par l’homme, alors que REST est lisible avec tout simplement XML ou JSON
  5. SOAP n’est pas uniquement via HTTP, il utilise également d’autres protocoles tels que SMTP, FTP, etc. REST s’applique uniquement à HTTP

C'est tout ce que je sais comme différences entre eux. Quelqu'un pourrait-il me corriger et ajouter plus.

74
Huppo

SOAP utilise WSDL pour la communication entre le consommateur et le fournisseur, alors que REST utilise simplement XML ou JSON pour envoyer et recevoir des données

WSDL définit un contrat entre client et service et est statique par nature. Dans le cas de REST, le contrat est assez compliqué et est défini par HTTP, URI, formats de média et protocole de coordination spécifique à l'application. Il est très dynamique contrairement à WSDL.

SOAP ne renvoie pas de résultat lisible par l’homme, alors que REST est lisible avec tout simplement XML ou JSON

Ce n'est pas vrai. XML ou JSON standard ne sont pas du tout reposés sur REST. Aucun d’entre eux ne définit de contrôle (liens et relations de lien, informations de méthode, informations de codage, etc.) qui est contre REST dans la mesure où les messages doivent être autonomes et coordonner l’interaction entre l’agent/client et service.

Avec des liens + des liens sémantiques, les clients devraient être en mesure de déterminer l’étape suivante de l’interaction, de suivre ces liens et de poursuivre la communication avec le service.

Il n'est pas nécessaire que les messages soient lisibles par l'homme, il est possible d'utiliser un format crypté et de construire des applications parfaitement valides REST. Peu importe que le message soit lisible par l'homme ou non.

Ainsi, les formats XML simples (application/xml) ou JSON (application/json) ne sont pas des formats suffisants pour créer des applications REST). Il est toujours raisonnable d’utiliser un sous-ensemble de ces types de supports génériques qui ont une forte signification sémantique. et offrent suffisamment d'informations de contrôle (liens, etc.) pour coordonner les interactions entre le client et le serveur.

REST est terminé que HTTP

Ce n'est pas vrai, HTTP est le plus utilisé et quand on parle de REST, on suppose simplement que HTTP. HTTP définit l'interface avec ses méthodes (GET, POST, PUT, DELETE, PATCH, etc.) et diverses en-têtes pouvant être utilisés uniformément pour interagir avec les ressources, cette uniformité pouvant également être obtenue avec d'autres protocoles.

P.S. Explication très simple mais très intéressante de REST: http://www.looah.com/source/view/2284

54
ioseb

Au quotidien, en termes de programmation pratique, la plus grande différence réside dans le fait qu'avec SOAP, vous travaillez avec des formats d'échange de données statiques et fortement définis, comme avec REST et d'échange de données JSON. le formatage est très lâche par comparaison. Par exemple, avec SOAP, vous pouvez valider que les données échangées correspondent à un schéma XSD. Le XSD sert donc de "contrat" sur la manière dont le client et le serveur doivent comprendre comment les données échangées doivent être structurées.

Les données JSON ne sont généralement pas transmises selon un format fortement défini (à moins que vous n'utilisiez un cadre qui le supporte .. par exemple http : //msdn.Microsoft.com/en-us/library/jj870778.aspx ou implémentant json-schema).

En fait, certains (beaucoup/la plupart) soutiendraient que la sauce secrète "dynamique" de JSON va à l’encontre de la philosophie/culture qui consiste à le contraindre par des contrats de données ( Les services Web JSON RESTful doivent-ils utiliser un contrat de données )

Les personnes habituées à travailler dans des langages dynamiques faiblement typés ont tendance à se sentir plus à l'aise avec le relâchement de JSON alors que les développeurs de langages fortement typés préfèrent XML.

http://www.mnot.net/blog/2012/04/13/json_or_xml_just_decide

4
MikeM

SOAP apporte son propre protocole et vise à exposer des éléments de logique d’application (et non de données) en tant que services. SOAP expose les opérations.) SOAP est centré sur l'accès aux opérations nommées, chacune implémentant une logique métier via différentes interfaces.

Bien que SOAP soit communément appelé "services Web", il s’agit d’un terme impropre. SOAP n’a pratiquement rien à voir avec le Web. REST fournit de véritables "services Web" basés sur les URI et HTTP.

À titre d'illustration, voici quelques appels et leur domicile approprié commenté.

getUser(User);

C'est une opération de repos car vous accédez à une ressource (données).

switchCategory(User, OldCategory, NewCategory)

REST autorise de nombreux formats de données différents, où SOAP autorise uniquement le format XML. Bien que cela puisse paraître compliqué, REST car vous devez gérer plusieurs formats, dans JSON convient généralement mieux aux données et s’analyse beaucoup plus rapidement. REST permet une meilleure prise en charge des clients de navigateur grâce à sa prise en charge de JSON.

0
Shiven