Wie viele wissen, steigt die mobile Entwicklung heutzutage rasant an und ich glaube, sie wirkt sich auf das aus, was wir codieren. Um genau zu sein, bin ich daran interessiert, Webdienste für eine mobile Anwendung zu entwickeln.
Ich sehe zwei mögliche Architekturen - RPC und REST. Ich habe sowohl REST- als auch RPC-Dienste entwickelt und festgestellt, dass RPC-Dienste viel einfacher zu codieren sind, insbesondere in Sprachen wie PHP. Das Problem dabei scheint die Skalierbarkeit zu sein - die Serverseite kann leicht zu einem Chaos werden, wenn viele Prozeduren vorhanden sind.
REST hingegen scheint viel strukturierter zu sein, die Serverseite ist relativ einfach zu warten, kann jedoch Daten in mehrere Ressourcen aufteilen, was für mobile Anwendungen (aus mehreren Gründen) schlecht ist.
Nach meinen Erfahrungen scheint RPC in den meisten Fällen etwas besser zu sein:
- Sowohl die Client- als auch die Serverseite sind bemüht, die Anzahl der verfügbaren Prozeduren und getätigten Anrufe zu minimieren.
- Das Befolgen von Architekturregeln wirkt nicht mit ansonsten möglichen Optimierungen entgegen.
Ich erwarte nicht wirklich, dass mir jemand erklärt, was REST und RPC sind, das Web ist voll davon. Ich möchte, dass Leute, die Erfahrung mit der Entwicklung mobiler Apps haben, ihre Meinung zur Verwendung dieser beiden Architekturen auf der Serverseite äußern. Trinkgelder sind ebenfalls willkommen (wer liebt Trinkgelder nicht?).
quelle
Antworten:
Es gibt kaum einen Unterschied, RPC ist in der Regel mehr Binärprotokolle als REST, aber das muss nicht der Fall sein. Auch RPC wird in der Regel als einzelner Prozedurpunkt pro Aufruf implementiert, aber das muss auch nicht sein - Sie können eine einzelne RPC-Prozedur implementieren, die ein Verb im REST-Stil als erstes Argument verwendet. RPC hat manchmal einen halb- / zustandsbehafteten Ansatz, aber auch dies muss nicht der Fall sein, wenn Sie bei jedem Aufruf ein "Cookie" übergeben.
Heutzutage kommt es auf die Entwicklungsunterstützung an, und es gibt mehr REST-APIs für webbasierte Sprachen, sodass die Benutzer REST verwenden. Wenn Sie die Entwicklung benutzerorientierter betrachten, ist es wahrscheinlich besser, stattdessen einen RPC-Mechanismus zu verwenden, der die Flexibilität nutzt, ein komprimierteres Binärprotokoll bereitzustellen, und es dann nach Ihren Wünschen zu implementieren - eine einzelne Prozedur Das leitet zu einer Routine weiter, die auf einer ID oder einem Verb basiert, und ist durch Übergeben einer ID vollständig zustandslos. All dies kann so implementiert werden, dass es sehr REST-artig aussieht, jedoch mit deutlich geringerem Overhead.
Es gibt mehrere RPC-Systeme, versuchen Sie Protokollpuffer oder Sparsamkeit für Ihre mobile App.
quelle
Vielleicht möchten Sie einen Blick auf diesen Artikel von Netflix über das API-Redesign werfen: http://techblog.netflix.com/2012/07/embracing-differences-inside-netflix.html
TL; DR:
Persönliche Anmerkung:
quelle