58 votes

Différence entre REST et WebServices

Quelle est la différence entre le REPOS et le WebService (SOAP), j'ai regardé le facebook api, ils utilisent des en-têtes HTTP et d'autres paramètres (probablement xml ou non) et de retourner le résultat au format xml, où d'autre SAVON fait exactement la même, en-têtes HTTP + xml paramètres et renvoie les en-têtes + xml.

RESTE nécessite également authentifié jeton où d'autre SOAP utilise de la session http, qui est exactement le même jeton utilisé pour l'authentification et d'autres informations. Tout ce que je peux voir que le SAVON est peu avancée de la version de REPOS?

Ou existe-il d'autres facteurs de performance? La lecture sur les REPOSER juste en parle très haut niveau de serveur de client de communication, mais même du SAVON fait exactement la même. Quelqu'un peut-il m'indiquer où il peut définir corriger boundry de REPOS et de SAVON.

Nous utilisons beaucoup de SAVON de manière transparente .net, mais je veux juste savoir est-il vraiment la peine de payer l'attension de REPOS où actuellement tout fonctionne exceptionnellement lisse.

Je sais que le REPOS est une architecture et SOAP est un protocole, mais ma question est dans le détail qui est actuellement l'ASP.NET WebService de mise en œuvre de SAVON a RESTE de l'architecture?

71voto

Keith Points 46288

SOAP est un protocole pour l'envoi/la réception de données via HTTP, XML.

Typique d'un WebService sera un peu de méthodes d'un WSDL qui décrit comment l'appeler. Il n'existe pas de convention pour la façon dont ils devraient être structurés, de sorte que vous avez toujours besoin de beaucoup de documentation de l'API.

Généralement, ce sera quelque chose comme (par .net):

  • Http POST mysite.com/products.asmx/ListAllProducts - retourne une liste XML de produits
  • Http POST mysite.com/products.asmx/GetProduct - retourne XML pour les produits basés sur SOAP XML dans le contenu mis en ligne
  • Http POST mysite.com/products.asmx/UpdateProduct - les changements de produit basé sur SOAP XML dans le contenu mis en ligne

Le REPOS est plus de la convention pour la structuration de l'ensemble de vos méthodes:

  • Http GET à partir de mysite.com/products - retourne XML ou JSON liste de tous les produits
  • Http GET à partir de mysite.com/products/14 - retourne XML ou JSON pour le produit 14
  • Http POST mysite.com/products/14 - les changements de produit de 14 à ce que vous publiez dans le formulaire HTML.

Donc RESTE fonctionne plus comme vous vous attendez navigateur, les Url. De cette façon, il est plus naturel et qu'une convention est beaucoup plus facile à comprendre. Toutes les Api REST de travail de la même façon, afin de ne pas passer autant de temps d'apprentissage des bizarreries de chaque système.

RESTE, de plus, donc, idéalement, la suivante devrait fonctionner:

  • Http SUPPRIMER pour mysite.com/products/14 - supprime produit 14
  • Http METTRE à mysite.com/products - ajoute un nouveau produit

Malheureusement, la majorité des navigateurs n'implémentent pas de ces verbes, de sorte que vous devez compter sur GET et POST pour l'instant.

13voto

Andy Points 4242

Pour moi, un service mis en place à l'aide d'une approche RESTful gagne plus d'un qui utilise du SAVON ou du RPC en fonction de son accessibilité. Dans un système relativement fermé, où l'outillage est disponible pour générer les stubs et des liens basés sur un WSDL, ce n'est pas vraiment important. Cependant, si vous souhaitez créer des services qui sont accessibles et disponibles pour un large éventail de clients, alors que l'uniformité du RESTE des services et de la facilité avec laquelle elles peuvent être consommées est un gros plus c'est à dire que vous n'avez pas besoin d'un lourd RPC pile, juste la possibilité de faire des requêtes HTTP.

Pas sûr que cela totalement répond à votre question, mais si, comme vous le dites, vous avez un système qui fonctionne basé sur SOAP (et vous contrôlez le client et le serveur), alors je ne vois pas de raison de changer. En outre, certains services vont naturellement se prêtent plus à la RPC en fonction de l'accès, dans ce cas, une interface SOAP sera plus approprié.

En termes de performances, une ou plusieurs couches seraient effectivement retiré par le client et le serveur de la technologie des piles si vous n'utilisez pas de SAVON, donc toutes les autres choses étant égales par ailleurs, un service qui expose une interface RESTful va la gagner.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X