JSON-RPCJSON-RPC (JavaScript Object Notation Remote Procedure Call) ist ein Protokoll zum Aufruf von Methoden in entfernten Computersystemen, ähnlich wie XML-RPC (die Daten werden jedoch in JSON statt in XML gesendet). Bei der Spezifikation wurde darauf geachtet, dass JSON-RPC möglichst keine unnötige Komplexität enthält und über verschiedene Kommunikationsprotokolle genutzt werden kann. Dadurch kann es sehr flexibel eingesetzt werden. Zudem unterstützt das Protokoll asynchrone Kommunikation, da alle Anfragen und Antworten eine ID enthalten, was eine einfache Zuordnung von Antworten zu den entsprechenden Anfragen ermöglicht. JSON-RPC 1.0 erlaubt Anfragen in beide Richtungen (Peer-to-Peer), die meisten JSON-RPC 1.0 Implementierungen unterstützen jedoch standardmäßig nur eine Richtung (Client-Server-Modell). JSON-RPC 2.0 verwendet ein Client-Server-Modell. Anfragen in beide Richtungen sind möglich, indem auf beiden Seiten ein JSON-RPC-Server verwendet wird. FunktionsweiseAnfrageEin JSON-RPC-Call besteht aus einem JSON-Objekt, das vom Client an einen Server geschickt wird. Mögliche Anfragetypen sind
In der folgenden Tabelle sind die Bestandteile eines Request-Objekts aufgelistet.
Eine Notification zeichnet sich dadurch aus, dass:
AntwortIm Fall eines Requests schickt der Server nach der Ausführung der angeforderten Methode eine Antwort als JSON-Objekt zurück an den Client. Die Bestandteile eines Response-Objektes sind in der folgenden Tabelle aufgelistet.
Erhält der Server eine Notification, führt er die angegebene Methode aus, sendet jedoch keine Antwort. Erhält er einen Batch-Request, führt er die aufgelisteten Methoden aus, und sendet eine Batch-Response (d. h. die Antworten auf alle Requests im Batch-Request in einer Nachricht). BeispieleIn diesen Beispielen steht Version 2.0Ein einfaches Beispiel mit einer Anfrage und einer Antwort:
Gleiches Beispiel mit "named parameters":
Weitere Beispiele finden sich am Ende der JSON-RPC 2.0 Spezifikation. Version 1.0Ein einfaches Beispiel mit einer Anfrage und einer Antwort --> { "method": "gibAus", "params": ["Hallo JSON-RPC"], "id": 1} <-- { "result": "Hallo JSON-RPC", "error": null, "id": 1} Dieses Beispiel zeigt einen Teil der Kommunikation in einer Chat-Anwendung. Der Chat-Dienst sendet eine Notification für jede Nachricht, die der Client erhalten soll. Der Client sendet einen Request, um eine Nachricht zu senden und erwartet eine positive Rückmeldung, um zu wissen, dass die Nachricht veröffentlicht wurde.[1] ... --> {"method": "veröffentlicheNachricht", "params": ["Hallo an alle!"], "id": 99} <-- {"result": 1, "error": null, "id": 99} <-- {"method": "empfangeNachricht", "params": ["Benutzer1", "Wir unterhielten uns gerade"], "id": null} <-- {"method": "empfangeNachricht", "params": ["Benutzer3", "Ich muss jetzt los, tschüss"], "id": null} --> {"method": "veröffentlicheNachricht", "params": ["Ich habe eine Frage!"], "id": 101} <-- {"method": "ändereStatus", "params": ["abwesend","Benutzer3"], "id": null} <-- {"result": 1, "error": null, "id": 101} ... VersionsgeschichteDie erste Version vom JSON-RPC stammt von 2005. Die Version 2.0 wurde 2010 verabschiedet.
ImplementierungenJSON-RPC wurde in verschiedenen Programmiersprachen implementiert, darunter JavaScript, C++, C, C#, Java, Python und PHP. Da JSON aus Unicode-Zeichen besteht, kann JSON-RPC jedoch auch in anderen Programmiersprachen relativ einfach implementiert werden.[4] VerbreitungWo überall JSON-RPC eingesetzt wird, ist in der Öffentlichkeit selten ein Thema. Google hat am 31. Juli 2019 verkündet, dass ab dem 12. August 2020 für den Zugriff auf die Google-APIs statt JSON-RPC nur noch REST verwendet werden kann.[5] Weblinks
Einzelnachweise
|
Portal di Ensiklopedia Dunia