Gruppo Meteo/Bolivia/taller/JSONRPC

Da raspibo.
Versione del 21 apr 2019 alle 18:02 di Pat1 (discussione | contributi) (Creata pagina con ' = Llamada a procedimiento remoto (RPC) = En computación distribuida, la llamada a procedimiento remoto (en inglés, Remote Procedure Call, RPC) es un programa que utiliza u...')
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Jump to navigation Jump to search

Llamada a procedimiento remoto (RPC)

En computación distribuida, la llamada a procedimiento remoto (en inglés, Remote Procedure Call, RPC) es un programa que utiliza una computadora para ejecutar código en otra máquina remota sin tener que preocuparse por las comunicaciones entre ambas.


JSON

JSON (JavaScript Object Notation - Notación de Objetos de JavaScript) es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para las máquinas es simple interpretarlo y generarlo. Está basado en un subconjunto del Lenguaje de Programación JavaScript, Standard ECMA-262 3rd Edition - Diciembre 1999. JSON es un formato de texto que es completamente independiente del lenguaje pero utiliza convenciones que son ampliamente conocidos por los programadores de la familia de lenguajes C, incluyendo C, C++, C#, Java, JavaScript, Perl, Python, y muchos otros. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos.

JSON está constituído por dos estructuras:

  • Una colección de pares de nombre/valor. En varios lenguajes esto es conocido como un objeto, registro, estructura, diccionario, tabla hash, lista de claves o un arreglo asociativo.
  • Una lista ordenada de valores. En la mayoría de los lenguajes, esto se implementa como arreglos, vectores, listas o sequencias.

Estas son estructuras universales; virtualmente todos los lenguajes de programación las soportan de una forma u otra. Es razonable que un formato de intercambio de datos que es independiente del lenguaje de programación se base en estas estructuras. http://www.json.org/json-es.html

Ejemplo de JSON

A continuación se muestra un ejemplo simple de definición de barra de menús usando JSON y XML.

JSON:

{
    "menu": {
        "id": "file",
        "value": "File",
        "popup": {
            "menuitem": [
                {
                    "value": "New", "onclick": "CreateNewDoc()"
                },{
                    "value": "Open", "onclick": "OpenDoc()"
                },{
                    "value": "Close", "onclick": "CloseDoc()"
                }
            ]
        }
    }
}


JSONRPC

JSON-RPC es un protocolo de llamada a procedimiento remoto codificado en JSON. Es un protocolo muy simple (y muy similar a XML-RPC), que define solo algunos tipos de datos y comandos. JSON-RPC permite notificaciones (datos enviados al servidor que no requieren una respuesta) y para que se envíen múltiples llamadas al servidor, las cuales pueden ser contestadas fuera de orden.

JSON-RPC funciona enviando una solicitud a un servidor que implementa este protocolo. El cliente en ese caso suele ser un software que intenta llamar a un solo método de un sistema remoto. Se pueden pasar múltiples parámetros de entrada al método remoto como una matriz u objeto, mientras que el método en sí también puede devolver múltiples datos de salida. (Esto depende de la versión implementada.)

Todos los tipos de transferencia son objetos individuales, serializados usando JSON. [1] Una solicitud es una llamada a un método específico proporcionado por un sistema remoto. Debe contener tres propiedades determinadas:

  • Método: una cadena con el nombre del método que se va a invocar.
  • params: un objeto o una matriz de valores que se pasan como parámetros al método definido.
  • id: un valor de cualquier tipo utilizado para hacer coincidir la respuesta con la solicitud a la que está respondiendo.

El receptor de la solicitud debe responder con una respuesta válida a todas las solicitudes recibidas. Una respuesta debe contener las propiedades mencionadas a continuación.

  • resultado: los datos devueltos por el método invocado. Si se produjo un error al invocar el método, este valor debe ser nulo.
  • error: un código de error especificado si se produjo un error al invocar el método; de lo contrario, es nulo.
  • id: el id de la solicitud a la que responde.

Dado que hay situaciones en las que no se necesita una respuesta o incluso que no se desea, se introdujeron notificaciones. Una notificación es similar a una solicitud, excepto para el ID, que no es necesario porque no se devolverá ninguna respuesta. En este caso, la propiedad id debe omitirse (versión 2.0) o ser nula (versión 1.0).

Version 2.0

Request and response:

--> {"jsonrpc": "2.0", "method": "subtract", "params": {"minuend": 42, "subtrahend": 23}, "id": 3}
<-- {"jsonrpc": "2.0", "result": 19, "id": 3}

Notification (no response):

--> {"jsonrpc": "2.0", "method": "update", "params": [1,2,3,4,5]}