web-dev-qa-db-fra.com

REST vs RPC dans PHP

Je suis en train de créer mon propre site Web Ajax et j'envisage entre RESTE et RPC.

Si mon serveur prenait en charge les servlets, j'installerais simplement persévérer et mettrais fin au problème, mais mon serveur ne prend pas en charge les servlets.

RPC est plus simple à coder (IMO) et peut être écrit en PHP facilement. Tout ce dont j'ai besoin est un exécuteur de requête de base de données. J'utilise Dojo Toolkit et JSON .

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

39
the_drow

Uhm ... pour faire simple, les deux sont des modèles très abstraits ... si abstraits, ils se produisent naturellement partout ...

REST est l'idée d'avoir des ressources adressées avec un identifiant global (l'URI dans le cas de HTTP) qui sont accessibles d'une manière CRUD (en utilisant POSTER , OBTENIR , PUT et DELETE dans le cas de HTTP ... enfin, au moins c'est l'idée)...

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

Il y a une petite comparaison sympa sur Wikipedia

Persevere crée un service qui permet les deux (d'une manière très élégante, certes) ... c'est RESTful (bien qu'il n'utilise pas seulement les fonctionnalités HTTP pour y parvenir) et expose une interface RPC ...

En fin de compte, vous devriez regarder ce que votre application doit faire ... comme la plupart des gens, vous vous retrouverez probablement avec une API RPC (que ce soit basé sur XML ou JSON ou autre), qui inclut une couche de transport pour un sous-système partiellement RESTful ... c'est parce qu'avoir RESTfulnes signifie flexibilité. .. si le client peut parcourir plus ou moins librement les données sur le serveur (via un ensemble de méthodes CRUD simples), cela ne dépend pas d'un ensemble limité (spécifique au problème) de méthodes exposées via l'API, et vous pouvez déplacer logique client ...

25
back2dos

La meilleure façon de le comprendre est de lire la dissertation de Roy T. Fielding à ce sujet, ou des articles pertinents sur son blog où il discute des différences entre les architectures pure REST et simplement RPC.

Une autre chose à noter est que l'article de Wikipedia sur REST est en mauvais état et Fielding lui-même, l '"inventeur" de REST, suggère que l'article est inexact.

La plus grande chose que les gens manquent avec REST est la possibilité de découverte - les ressources doivent inclure des URI pour d'autres ressources connexes dans leur hypertexte, au lieu de s'appuyer sur des conventions de dénomination d'URI, qui sont hors bande et non normalisées.

Un gros problème avec les implémentations RPC populaires comme SOAP ou XML-RPC est qu'elles utilisent HTTP sous leur propre architecture propriétaire, plutôt que de profiter de toutes les différentes propriétés de HTTP comme PUT, GET, DELETE etc. cela ne convient pas également à la pile Web traditionnelle - un serveur de cache au milieu ne fonctionne pas, par exemple, sans connaître la signification du contenu de l'appel RPC.

Ceci est une introduction incomplète à REST et RPC mais je pense que j'ai souligné certains des points importants qui sont souvent manqués. Soyez prudent, car il y a BEAUCOUP de fausses informations sur REST.

Cela dit, REST n'est pas pour tout. C'est une architecture, donc la façon dont vous pouvez l'implémenter est plutôt flexible. Mais si cela n'a pas de sens d'accéder principalement à des ressources en tant que ressources, alors REST peut ne pas convenir, ou peut seulement convenir à des parties de votre application, ce qui est bien.

56
aehlke

Il existe trois styles de services différents:

  • API RPC - le client envoie une procédure et des paramètres au service et le service est responsable de l'exécution de la commande et du retour d'un résultat.
  • API de message (API de document) - le client envoie des DOM (éléments), qui sont normalement des structures plus complexes que les appels d'API RPC, car ils ont tendance à ne pas impliquer des opérations directement.
  • L'API de ressources - est utilisée pour accéder aux ressources (tuples de base de données, fichiers, images, etc.). En général, il devrait également fournir une bonne négociation de type de média.

SOAP et REST sont une compilation de normes de W3C , et la principale différence est que SOAP utilise HTTP, SMTP et etc. comme protocoles de transport et REST l'utilise comme protocole d'application, AKA qu'il devrait prendre en charge (GET, PUT, Push, DELETE et POST). SOAP implique également l'utilisation de XML et REST pourrait utiliser n'importe quel type de données (JSON, XML, HTTP, etc.). De plus, l'un des principaux avantages de SOAP est le descripteur de service ( Fichier WSDL), qui donne la possibilité de génération automatique de Service Connector (proxy) au client.

Il n'y a pas puce argentée ; le type et l'architecture d'un service Web dépendent des exigences réelles du client et de la technologie.

Pour une idée générale sur le sujet, voir l'un des livres de signatures de Martin Fowler - Service Design Patterns

6
Kalina Todorova