Comparer et comparer les services REST et SOAP web? [dupliquer]

cette question a déjà une réponse ici:

je suis actuellement figure de semblable est à la fois en utilisant le protocole internet (HTTP) pour l'échange de données entre le consommateur et le fournisseur.

la différence est:

  1. le SAVON est un basé sur XML message de protocole, tandis que le RESTE est d'un style architectural
  2. SOAP utilise WSDL pour la communication entre le consommateur et le fournisseur, tandis que REST utilise XML ou JSON pour envoyer et recevoir des données
  3. SOAP invoque des services en appelant la méthode RPC, le reste appelle simplement des services via le chemin D'URL
  4. SAVON ne retourne pas lisible par l'homme suite, tandis que le résultat de repos est lisible avec est juste XML simple ou JSON
  5. SOAP n'est pas seulement sur HTTP, il utilise également D'autres protocoles tels que SMTP, FTP, etc, le reste est uniquement sur HTTP

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

73
demandé sur Nawaz 2012-06-11 11:16:31

3 réponses

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

WSDL définit le contrat entre le client et le service, et est statique, de par sa nature. En cas de contrat REST est un peu compliqué et est défini par HTTP, URI, Formats de médias et le protocole de Coordination spécifique à L'Application. C'est très dynamique contrairement à WSDL.

savon ne renvoie pas de résultat lisible par l'utilisateur, tandis que le résultat REST est lisible avec un XML simple ou JSON

Ce n'est pas vrai. Simple XML ou JSON ne sont pas reposants du tout. Aucun d'entre eux ne définit de contrôles(c'est-à-dire des liens et des relations de liens, des informations de méthode, des informations d'encodage, etc.)...) ce qui est contre le repos dans la mesure où les messages doivent être autonomes et coordonner l'interaction entre l'agent/client et le service.

avec liens + lien sémantique relations les clients devraient être en mesure de déterminer la prochaine étape de l'interaction, de suivre ces liens et de continuer à communiquer avec le service.

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

ainsi, le XML simple (application / xml) ou JSON (application/json) ne sont pas des formats suffisants pour construire le reste application. Il est toujours raisonnable d'utiliser des sous-ensembles de ces types de médias 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.

le repos est uniquement sur HTTP

pas vrai, HTTP est le plus largement utilisé et quand nous parlons de REST web services nous supposons juste HTTP. HTTP définit l'interface avec ses méthodes (GET, POST, PUT, DELETE, PATCH etc) et divers en-têtes qui peuvent être utilisés uniformément pour interagir avec les ressources. Cette homogénéité peut être réalisé avec d'autres protocoles.

P. S. Très simple, mais très intéressante explication du repos: http://www.looah.com/source/view/2284

54
répondu ioseb 2013-07-24 14:35:07

en termes de programmation quotidienne, 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 où comme avec REST et JSON le formatage d'échange de données 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 façon dont le client et le serveur doivent comprendre comment les données échangées doivent être structurées.

données JSON est généralement pas transmis selon un format fortement défini (sauf si vous utilisez un cadre qui le supporte .. par exemple, http://msdn.microsoft.com/en-us/library/jj870778.aspx ou la mise en œuvre de json schema).

en fait, certains (beaucoup/la plupart) soutiendraient que la sauce secrète "dynamique" de JSON va à l'encontre de la philosophie / culture de la contraindre par des contrats de données ( si JSON Les services web RESTful utiliser les données du contrat )

les personnes habituées à travailler dans des langages dynamiques mal dactylographiés ont tendance à se sentir plus à l'aise avec le manque de rigueur de JSON tandis que les développeurs de langages fortement dactylographiés préfèrent le XML.

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

4
répondu Michael Mügge 2017-05-23 12:10:15

SOAP apporte son propre protocole et se concentre sur l'exposition de morceaux de logique d'application (Pas de données) comme des services. Le savon expose les opérations. SOAP se concentre sur l'accès aux opérations nommées, chacune mettant en œuvre une logique d'affaires à travers différentes interfaces.

bien que SOAP soit communément appelé" services web", il s'agit d'un terme erroné. SOAP a très peu, voire rien à voir avec le Web. REST fournit de véritables "services Web" basés sur URIs et HTTP.

par voici quelques exemples d'appels et leur accueil approprié avec des commentaires.

getUser(User);

il s'agit d'une opération de repos puisque vous accédez à une ressource (données).

switchCategory(User, OldCategory, NewCategory)

reste permet de nombreux formats de données différentes où comme SOAP permet seulement XML. Bien que cela puisse sembler ajouter de la complexité au repos parce que vous avez besoin de gérer les formats alternatifs et / ou substituts, dans mon expérience, il a été en fait tout à fait bénéfique. JSON est généralement un meilleur ajustement pour les données et passe beaucoup plus vite. REST permet un meilleur soutien pour les clients de navigateur en raison de son soutien pour JSON.

0
répondu Shiven 2012-06-11 07:20:49