39 votes

REST vs. RPC en PHP

Je construis mon propre site Web ajax et je réfléchis entre REST et RPC.
Si mon serveur prenait en charge les servlets, je voudrais simplement installer persevere et résoudre le problème, mais mon serveur ne prend pas en charge les servlets.
RPC est plus simple à coder (imo) et peut être écrit facilement en PHP.
Tout ce dont j'ai besoin, c'est d'un exécuteur de requêtes de base de données.
J'utilise la boîte à outils Dojo et JSON.

Pourquoi devrais-je choisir REST sur RPC ou RPC sur REST?

56voto

aehlke Points 4180

La meilleure façon de le comprendre est de lire Roy T. Fielding de la thèse sur elle, ou des articles sur son blog où il explique les différences entre le REPOS et simplement RPC architectures.

Une autre chose à noter est que l'article de Wikipedia sur le REPOS est en piètre état et Fielding lui-même, "l'inventeur" du RESTE, suggère que l'article est inexact.

La plus grande chose que les gens ne remarquent pas avec le REPOS est l'identification de ressources devrait inclure des Uri pour les autres ressources à l'intérieur de leur hypertexte, au lieu de s'appuyer sur les URI des conventions de nommage, qui sont out-of-band et non standardisés.

Un gros problème avec les RPC implémentations comme SOAP ou XML-RPC, c'est qu'ils utilisent le protocole HTTP sous leur propre architecture, plutôt que de profiter de toutes les différentes propriétés de HTTP comme PUT, GET, DELETE etc. Donc, ce n'est pas adapté au web traditionnel de la pile, un serveur de cache dans le milieu ne fonctionne pas, par exemple, sans en connaître la signification du contenu de l'appel RPC.

C'est incomplète introduction au REPOS et à la RPC, mais je pense que j'ai mis en évidence quelques points importants qui sont souvent oubliée. Soyez prudent, car il y a BEAUCOUP de fausses informations sur le REPOS.

Cela dit, le RESTE n'est pas pour tout. C'est une architecture, c'est plutôt flexible comment vous pouvez la mettre en œuvre. Mais si ça n'a pas de sens pour l'accès des choses principalement en tant que ressources, puis de REPOS peut ne pas s'adapter, ou il peut seulement s'adapter pour des parties de votre application, ce qui est bien.

28voto

back2dos Points 13253

euh ... pour faire simple, les deux sont très abstraite des modèles ... donc en résumé, ils se produisent naturellement everewhere ...

REST est l'idée d'avoir des ressources traitées avec un identificateur global (l' URI dans le cas d' HTTP) qui sont accessibles en un CRUD (grâce aux POST, GET, PUT et DELETE dans le cas d' HTTP ... eh bien au moins c'est l'idée) ...

RPC est l'idée de l'endroit où vous appelez une procédure sur une autre machine, en passant des paramètres, et en prenant une valeur de retour ...

il y a une belle petite comparaison sur le wiki

Persévérer crée un service, qui permet à la fois (dans un moyen très élégant, il est vrai) ... c'est - RESTtot (bien qu'il ne fait pas qu'utiliser HTTP-caractéristiques d'y parvenir) et expose une RPC interface ...

en fin de compte, vous devriez regarder ce que votre application a besoin de faire ... comme la plupart des gens, vous aurez probablement se retrouver avec un RPC API (qu'elle soit fondée sur XML ou JSON ou quoi que ce soit), qui comprend une couche de transport pour une partie RESTful sous-système ... c'est, parce que, ayant RESTfulnes, synonyme de flexibilité ... si le client peut plus ou moins librement parcourir les données sur le serveur (par le biais d'un ensemble de simples méthodes CRUD), il ne dépend pas d'un nombre limité (problème spécifique) de l'ensemble des méthodes exposées par le biais de l'API, et vous pouvez passer de la logique de clientwards ...

6voto

Kalina Todorova Points 39

Il y a trois types de services:

  • API RPC - le client envoie une procédure et les paramètres de service et le service est chargé de l'exécution de la commande et de retourner un résultat.
  • Message de l'API (API de Document) - le client envoie des DOMs (éléments), qui sont normalement des structures plus complexes que RPC appels d'API, car ils ont tendance à ne pas impliquer directement les opérations.
  • Ressources de l'API est utilisée pour accéder à des ressources (n-uplets de la base de données, des fichiers, des images, etc.). En général, il doit fournir également bon Type de support de Négociation.

Le SAVON et le REPOS sont de compilation des normes du W3C, et la principale différence est que le SAVON utilise le protocole HTTP, SMTP et etc. comme les protocoles de transport et de REPOS, il utilise dans le protocole d'application aka. il devrait supports (GET, PUT, POUSSER, de SUPPRIMER, de POST). SAVON implique également l'utilisation de XML et de REPOS pourraient utiliser n'importe quel type de données (json, xml, http,...). De plus, l'un des principaux avantages de SAVON est le Descripteur de Service (fichier WSDL), ce qui donne au client la possibilité de l'auto-génération de Connecteur de Service (proxy).

Il n'y a pas une balle en argent, du type et de l'architecture d'un service web sont dépendait du client et les exigences en matière de technologie.

Pour avoir une idée générale sur le sujet, l'un des Martin Fowler Signature de Livres - Service de Design Patterns http://martinfowler.com/books/sdp.html

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