2011-09-22 3 views
8

Avertissement: Je suis vraiment confus entre les services basés sur REST et SOAP. Après avoir lu de nombreux tutoriels (qui semblent contradictoires) sur le service web basé sur REST, je me demandais si nous pouvions/devrions utiliser SOAP pour envoyer/recevoir des messages dans un service web basé sur REST?
J'ai essayé liens suivants
1) http://www.ibm.com/developerworks/webservices/library/ws-restful/Messages SOAP dans le service Web basé sur REST

2) http://rest.elkstein.org/2008/02/how-simple-is-rest.html

Répondre

16

Par "services SOAP" Je suppose que vous WS-I Basic Profile qui signifie que les services Web. La distinction est importante car SOAP peut être utilisé avec les services Web REST et BP WS-I. Laisse-moi expliquer.

SOAP est un format de messagerie XML pour l'échange de données. Le savon définit également un moyen de faire des appels de procédure à distance. SOAP est une norme ouverte du W3C. SOAP est indépendant de la couche de transport sous-jacente. Il est fréquent que HTTP soit utilisé comme couche de transport, mais il peut heureusement fonctionner sur SMTP et TCP, ainsi que sur d'autres transports.

RESTRESTRESTREST est un style architectural (pas un standard), alors faites attention de ne pas comparer REST et SOAP directement parce que vous ne comparez pas des pommes avec des pommes. REST prend HTTP et l'utilise comme il était censé être utilisé, avec toutes ses subtilités et sa richesse. Le style architectural REST peut être utilisé pour transférer des données dans n'importe quel format - il n'impose aucun format de données particulier. Soap est un format de sérialisation parfaitement adapté à un service Web de style REST. Mais beaucoup de gens utilisent JSON, XML, du texte brut et de nombreux autres formats avec REST. Vous pouvez aussi échanger des données binaires sur REST, comme des fichiers image. La bonne chose est que vous choisissez le format de données le plus approprié pour votre application. Notez que depuis REST est un modèle, pas un standard, il ya beaucoup de débats sur ce que cela signifie d'être vraiment RESTful. Il y a un concept appelé le Richardson Maturity Model qui énonce une série d'étapes vers l'idéal REST. En comparant avec le modèle de Richardson, nous pouvons voir exactement comment RESTful une implémentation REST particulière est. Les services Web WS-I BP sont au niveau 0 sur cette échelle (c'est-à-dire pas très RESTful du tout, juste en utilisant HTTP comme une couche de transport muette).

Je dirais ceci à propos de choisir REST vs services web WS-I Basic Profile - cela dépend de votre public. Si vous développez une interface de type B2B dans une entreprise, il est plus fréquent de voir les services Web WSI-BP. Parce qu'il existe une norme sous-jacente, et en raison du support mature des fournisseurs d'entreprise (tels qu'IBM, Oracle, SAP, Microsoft) et en raison du niveau de support du framework en particulier .NET et Java, WSI-BP a beaucoup de sens lorsque vous avez besoin de faire quelque chose rapidement et que vous voulez faciliter la connexion des clients dans un environnement d'entreprise, et que les données échangées sont des données d'entreprise qui se sérialisent bien en tant que SOAP. D'autre part, si vous exposer des services Web à l'audience Web plus large, je dirais qu'il y a eu une tendance de WSI-BP et vers le style RESTful. Étant donné que REST suppose que le client prend en charge le protocole HTTP, il peut être interopérable avec l'audience la plus large possible. REST vous donne également l'évolutivité du Web lui-même, avec la prise en charge de la mise en cache des ressources, etc., ce qui le rend bien plus performant que les services Web WSI-BP pour un large public.

+1

Quelle réponse délicieusement saine. –

+0

En effet, bonne réponse. –

+0

@saille: Merci l'homme. Maintenant, les choses semblent être plus faciles. – xyz

Questions connexes