128 votes

Pourquoi avons-nous besoin des Services Web RESTful?

Je vais apprendre des services web RESTful (c'est mieux de dire que je vais devoir faire cela car c'est une partie de CS master).

J'ai lu quelques infos sur Wikipédia et j'ai aussi lu un article sur le REPOS au Soleil Développeur de Réseau et je vois qu'il n'est pas facile de la technologie, il y a des cadres pour la construction d'applications Reposant, et c'est souvent par rapport à des services web SOAP et le programmeur doit comprendre quand utiliser du SAVON et quand le RESTE pourrait être sympa approche.

Je me souviens qu'il y a plusieurs années de SAVON était très populaire (la mode?) et l'article "SAVON" devait être présent dans toutes les bonnes CV. Mais, dans la pratique, il a été utilisé très rarement et pour atteindre de très simples fins.

Il me semble que le REPOS est un autre "le dernier mot de la mode" (ou j'ai peut être totalement faux, parce que je n'ai jamais vu de REPOS dans la pratique).

Pouvez-vous me donner quelques exemples de REPOS doit être utilisé, et pourquoi nous ne pouvons pas faire la même chose sans REPOS (ou pourquoi nous devrions passer plus de temps à faire la même chose sans REPOS)?

UPD: Malheureusement je ne peux pas voir tout en béton arguments qui peuvent souffler mon esprit dans les premiers commentaires. Me font penser que le REPOS est génial la technologie!

J'aimerais voir les réponses comme ceci:

J'ai été l'élaboration d'un autre complexe HelloWorld application et nous avons besoin de transfert de beaucoup de / minuscule données, et j'ai proposé RESTE de solution à mon collègue de travail:

– Oh, putain! Jonny, nous devrions certainement le REPOS de la mise en œuvre cette application!
– Oui, Billy, nous pouvez utiliser de REPOS, mais nous permettrait de mieux utiliser Le SAVON. Faites-moi confiance car je sais que quelque chose sur le développement de HelloWorld des applications.
– Mais le SAVON est l'ancienne technologie à partir de la dernière siècle et nous pouvons l'utiliser au mieux un.
– Billy, êtes-vous prêt pour passer 3 jours pour expérimenter avec RESTE? Nous pouvons faire cela avec du SAVON dans les 2 heures..
– Oui, j'en suis sûr que nous allons passé encore plus de temps pour atteindre le même niveau de sécurité/performance/ /évolutivité/que ce soit d'autre avec du SAVON. Je suis sûr que HelloWorld applications devraient être élaborés uniquement avec le RESTE à partir de maintenant.

136voto

Darrel Miller Points 56797

RESTE devrait être utilisé si il est très important pour vous de minimiser le couplage entre les composants client et serveur dans une application distribuée.

Cela peut être le cas si votre serveur est destiné à être utilisé par de nombreux clients différents que vous n'avez pas le contrôle. Il peut également être le cas si vous voulez être en mesure de mettre à jour le serveur régulièrement sans avoir besoin de mettre à jour le logiciel client.

Je peux vous assurer que la réalisation de ce faible niveau de couplage est pas facile à faire. Il est essentiel de suivre toutes les contraintes de REPOS pour réussir. Le maintien d'un purement apatrides connexion est difficile. Choisir les bons types de médias et de presser vos données dans les formats est délicate. Créer vos propres types de support peuvent être encore plus difficile.

L'adaptation de riches comportement du serveur dans l'uniforme HTTP interface peut être source de confusion et parfois semble futile en comparaison, relativement simple RPC approche.

Malgré les difficultés, les avantages sont que vous avez un service qu'un développeur client doit être en mesure de comprendre facilement en raison de la cohérence de l'utilisation du protocole HTTP. Le service doit être facilement détectable en raison de l'hypermédia et le client doit être extrêmement résistantes aux changements sur le serveur.

Les avantages de l'hypermédia et l'évitement de l'état de session permet l'équilibrage de charge simple et service de partitionnement possible. La stricte conformité aux HTTP règles de la disponibilité des outils comme les débogueurs et la mise en cache des procurations chose de merveilleux.

Mise à jour

Il me semble que le REPOS est une autre "le dernier mot de la mode" (ou j'ai peut être totalement faux, parce que je n'ai pas jamais vu de REPOS dans la pratique).

Je pense que le REPOS est devenu à la mode parce que les gens qui tentent de faire SOA type de projets ont constaté que l'utilisation de la pile de SAVON ils ne sont pas la réalisation de bénéfices qui ont été promis. Les gens de continuer de tourner vers le web comme un exemple de la simple intégration des méthodologies. Malheureusement, je pense que les gens sous-estiment la quantité de la planification et de la prospective qui est entré dans la création de la web et ils simplifient à l'excès ce qui doit être fait pour permettre à la nature de fortuite de réutilisation qui ne se produisent sur le web.

Vous dites que vous n'avez jamais vu de REPOS dans la pratique, mais qui ne peut pas être vrai si jamais vous utilisez un navigateur web. Le navigateur web est un client REST.

  • Pourquoi n'avez-vous pas besoin de faire un navigateur mise à jour quand quelqu'un change le code html sur un site web?
  • Pourquoi ne puis-je ajouter une nouvelle série complète de les pages d'un site web et le "client" pouvez toujours accéder à ces nouvelles pages sans une mise à jour?
  • Pourquoi n'ai-je pas besoin de fournir un "service-description de langue" à la navigateur web pour lui dire quand il va pour http://example.org/images/catque le type de retour d'image jpeg et quand vous allez à http://example.org/description/cat le type de retour texte/html?
  • Pourquoi puis-je utiliser un navigateur web pour visiter les sites qui n'existait pas lors de la navigateur a été libéré? Comment l' client savoir à propos de ces sites?

Ces peut sembler stupides questions, mais si vous savez la réponse, alors vous pouvez commencer à voir ce qui RESTE est tout au sujet. Regardez StackOverflow pour plus d'avantages de REPOS. Quand je suis à la recherche à une question, je peux marquer cette page ou envoyer l'url à un ami et il peut voir les mêmes informations. Il n'a pas à naviguer sur le site afin de trouver la question.

StackOverflow utilise une variété de OpenId services pour l'authentification, gravatar.com pour l'avatar images, google-analytics et Quantserve pour l'analyse de l'information. Ce genre de multi-entreprise d'intégration est le type de chose que le SAVON monde ne rêve que de. L'un des meilleurs exemples est le fait que les bibliothèques jQuery qui sont utilisés pour piloter le StackOverflow de l'INTERFACE utilisateur sont extraites de Google du Réseau de diffusion de Contenu. Le fait que, de la SORTE, peut orienter le client (navigateur web) pour télécharger le code à partir d'un site tiers pour améliorer la performance témoigne de la faible couplage entre le client web et le serveur.

Ce sont des exemples d'une architecture REST au travail.

Aujourd'hui, certains sites web / applications ne enfreindre les règles de REPOS et ensuite le navigateur ne fonctionne pas comme prévu.

  • L'infâme bouton retour du problème est causé par l'utilisation côté serveur l'état de session.
  • L'équilibrage de la charge peut devenir une douleur lors de l' vous avez l'état de session côté serveur.
  • Les applications Flash empêchent souvent la URL à partir de l'identification d'un la représentation.
  • L'autre problème que les pauses web les navigateurs est pauvre, de la conformité à media-type de normes. Nous entendons tous le temps sur la façon IE6 doit être tué. Le problème, c'est que les normes n'ont pas été correctement suivie, ou ont été ignorés pour quelque raison que ce soit.
  • L'utilisation de sessions de connexion sont les source de nombreux trous de sécurité.

RESTE partout. C'est la partie du web qui fait que cela fonctionne bien. Si vous voulez construire des applications distribuées qui peut évoluer comme le web, la résilience au changement comme le web et de promouvoir la réutilisation, le web a fait, puis suivez les mêmes règles, ils l'ont fait lors de la construction des navigateurs web.

11voto

quillbreaker Points 2843

RESTE a démarré, à ma connaissance, par Roy Fielding thèse de Styles Architecturaux et de la Conception de Réseau basée sur les Architectures Logicielles, ce qui est intéressant à lire si vous n'avez pas regardé.

Au sommet de la thèse est une citation:

Presque tout le monde se sent en paix avec la nature: l'écoute de l'océan les vagues sur le rivage, par un lac immobile, dans un champ d'herbe, sur un soufflée par le vent heath. Un jour, quand nous avons appris la façon intemporelle encore une fois, nous ressentons la même chose au sujet de nos villes, et nous nous sentirons comme beaucoup à la paix en eux, comme nous le faisons aujourd'hui la marche par l'océan, ou allongés dans l'herbe longue d'une prairie.

- Christopher Alexander, L'Intemporel Façon de construire (1979)

Et qui n'a vraiment de la somme. RESTE à de nombreux égards, plus élégant.

SOAP est un protocole sur le dessus de HTTP, de sorte qu'il ignore beaucoup de HTTP conventions de construire de nouvelles conventions dans le SAVON, et dans un certain nombre de façons redondant avec HTTP. HTTP, cependant, est plus que suffisant pour la récupération, la recherche, l'écriture, et de supprimer des informations via HTTP, et que beaucoup de ce qui RESTE. Parce que le REPOS est construit avec HTTP au lieu de sur le dessus de cela, cela signifie également que le logiciel qui veut intégrer avec elle (par exemple un navigateur web) n'a pas besoin de comprendre le SAVON de le faire, juste HTTP qui doit être le plus largement compris et intégré-avec le protocole à utiliser à ce stade.

4voto

John Saunders Points 118808

La plupart des "pro" réponses sur le RESTE semble venir de gens qui n'ont jamais développé un service web SOAP ou un client en utilisant un environnement qui fournit des outils appropriés pour la tâche. Ils se plaignent de problèmes que je n'ai tout simplement jamais rencontré, à l'aide de Visual Studio .NET et IBM Rational Développeur Web. Je suppose que si vous avez à développer des services web ou des clients dans un langage de script, ou une autre langue avec peu ou pas de support de l'outil, que ce sont les plaintes valides.

Je dois aussi admettre que plusieurs des "pro" points sonnent comme des choses qui peuvent effectivement être vrai - mais que je n'ai jamais vu un exemple qui illustre leur valeur. En particulier, je serais très reconnaissante si quelqu'un pouvait poster un commentaire contenant un lien vers un bon exemple d'un service web REST. Ce devrait être l'une qui utilise plusieurs niveaux de ressources, peut-être dans une hiérarchie, et qui utilise les médias types correctement. Peut-être que si je regarde un bon exemple, je vais comprendre, dans ce cas, je vais revenir ici et de l'admettre.

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