Main Menu




browser lang:en

Users Area

Client Login

today cache size is:0

 

 


Commenti

RE:trasformare in .gz by boris
10/03/2011 by marco

22/02/2011 by bono
RE:trasformare in .gz
22/02/2011 by boris
trasformare in .gz
21/02/2011 by bono
RE:Ma a che serve sta roba???
05/02/2011 by dwarf79
Ma a che serve sta roba???
28/01/2011 by Luca
Rapidshare hotfile fileserver download
08/01/2011 by Rapidshare hotfile fileserver download
re:xml
03/12/2010 by david68

Leggi tutto »


RAPIDQ

Rapid-Q:The lost files
My old library where i have collected all the rapidq scripts and italian help


Today my pagerank is: Free Page Rank Tool
Upbooking - free booking engine

JSON-RPC PHP

L'originale di questo documento si trova su http://jsonrpcphp.org/

JSON-RPC PHP è una coppia di classi scritte in PHP che implementano rispettivamente le funzionalità client e server del protocollo JSON-RPC. Obiettivo del progetto è il completo incaplsulamento della tecnica JSON-RPC all'interno del PHP.

Attraverso queste classi, è possibile offrire alla rete i metodi dei propri oggetti come RPC (server) e/o usufruire dei servizi RPC esattamente come se fossero oggetti locali.L'uso delle classi JSON-RPC PHP è estremamente semplice e mantiene intatto lo spirito di JSON:

Esempio L'esercizio proposto in questa pagina consiste nella realizzazione di un sistema server-side e di un sistema client-side per l'utilizzo delle stesse funzionalità.
I due casi, come si vede, sono del tutto indipendenti nella logica e sono complementari solo per le esigenze dell'esercizio.

Server

Supponiamo di aver realizzato una classe example che svolga alcune operazioni nel sistema locale.Le operazioni potrebbero essere una richiesta di informazioni:

public function giveMeSomeData($param);


il pasaggio di una informazione che deve essere immagazzinata nel sistema:

public function changeYourState($state);


o la scrittura di informazioni rilevanti in un database:

public function writeSomething($something);


più alcuni metodi protetti o privati e alcune proprietà.
Non è difficile immaginare un esempio di localUsage [code] degli oggetti della classe example:

require_once 'example.php';
$myExample = new example();



Immaginiamo ora che si voglia offrire queste stesse funzionalità a partner presenti sulla rete, che operino su host differenti.Un ottimo sistema per questo obiettivo è utilizzare JSON-RPC PHP. Il server RPC può avere la forma:


require_once 'jsonRPCServer.php';
require 'example.php';

$myExample = new example();
jsonRPCServer::handle($myExample)
    or print 'no request';

Tutto qui. Una volta invocato con l'opportuna chiamata JSON-RPC via HTTP POST, il server offre gli stessi metodi pubblici della classe example, accetta gli stessi parametri e restituisce gli stessi valori. Il linguaggio di JSON-RPC è quello indicato nelle specifiche.
Naturalmente, l'offerta di tutti i metodi pubblici potrebbe essere più di quanto si vuole. Non è escluso che alcune operazioni non vogliano essere consentite a consumer remoti, ma limitate agli utilizzatori locali della classe. Per ragioni di semplicità, JSON-RPC PHP non offre una soluzione diretta a questo problema, che può essere risolto agevolmente da chi allestisce il servizio con sistemi ordinari e triviali.

Supponiamo ad esempio che il metodo:
public function writeSomething($something);


voglia essere bloccato per gli utilizzatori remoti.
Occorre seplicemente costruire una estensione restrictedExample [code] della classe example, che annulla il metodo writeSomething() in un modo come:

public function writeSomething($something) {
        throw new Exception('writeSomething method

                is not available for RPC');
    }


Fatto ciò, il metodo writeSomething() non è più disponibile se l'RPC è basata sulla nuova classe. Il nuovo server [code], perciò, ha la forma:

require_once 'jsonRPCServer.php';
require 'example.php';
require 'restrictedExample.php';

$myExample = new restrictedExample();
jsonRPCServer::handle($myExample)
    or print 'no request';

Per chi voglia effettuare prove e test, sono disponibili in esecuzione sia il server che il localUsage di questo esempio.

Client

L'uso del client è elementare.Supponiamo di conoscere l'esistenza di un servizio RPC e di conoscerne metodi e caratteristiche.

Per il nostro esempio, supponiamo che il servizio sia quello illustrato al paragrafo precedente. Come si vedrà, però, non è assolutamente necessario che il service e il consumer utilizzino entrambi le classi di JSON-RPC PHP.
Una volta note le caratteristiche del servizio, un esempio di client [code] può essere costruito come segue:


require_once 'jsonRPCClient.php';
$myExample = new jsonRPCClient('http://localhost/server.php');

Gli oggetti della classe example così costruita hanno gli stessi metodi del servizio RPC offerto.Tutto qui.
Per chi voglia verificare il comportamento della classe, è disponibile l'output generato dal client.

Uso concorrente del client e del server JSON-RPC PHP

Una interessante osservazione, utile anche solo a fini esplicativi, emerge dall'uso concorrente delle due classi, qualora si debba realizzare sia l'ambiente client che l'ambiente server.

Se osserviamo un esempio di localUsage (sul lato server) della classe example e un esempio di client remoto, scopriamo che il codice è perfettamente identico, eccezion fatta, naturalmente, per la costruzione dell'oggetto. Se però il server ha imposto limitazioni sull'uso della classe (quindi viene usata nell'esempio la classe restrictedExample), i metodi annullati o modificati non avranno effetto corrispondente.

localUsage [execute]


require_once 'example.php';
$myExample = new example();

// performs some basic operation
echo 'Attempt to perform basic operations
'."\n"; try { echo 'Your name is '.$myExample->giveMeSomeData('name').'
'."\n"; $myExample->changeYourState('I am using this function from the local environement'); echo 'Your status request has been accepted
'."\n"; } catch (Exception $e) { echo nl2br($e->getMessage()).'
'."\n"; } // performs some strategic operation, locally allowed echo '
Attempt to store strategic data
'."\n"; try { $myExample->writeSomething('Strategic string!'); echo 'Strategic data succefully stored'; } catch (Exception $e) { echo nl2br($e->getMessage()); }


client [execute]


require_once 'jsonRPCClient.php';
$myExample = new jsonRPCClient('http://jsonrpcphp.org/server.php');

// performs some basic operation
echo 'Attempt to perform basic operations
'."\n"; try { echo 'Your name is '.$myExample->giveMeSomeData('name').'
'."\n"; $myExample->changeYourState('I am using this function from the network'); echo 'Your status request has been accepted
'."\n"; } catch (Exception $e) { echo nl2br($e->getMessage()).'
'."\n"; } // performs some strategic operation, locally allowed echo '
Attempt to store strategic data
'."\n"; try { $myExample->writeSomething('Strategic string!'); echo 'Strategic data succefully stored'; } catch (Exception $e) { echo nl2br($e->getMessage()); }

Questa osservazione chiarisce inequivocabilmente lo spirito di JSON-RPC PHP.


Commenti

Inserisci un commento

Titolo
Messaggio
Nome Utente
e-mail (se vuoi ricevere le risposte a questo post anche via mail)

Users

Videos


Scripts & Tutorials

Linux - I comandi principali

07/11/2010 

Per i piú smemorati, una lista di comandi principali usati con linux cd : cambia la directory corrente. ls : mostra il…

in:Scripts e tutorials (0 commenti)

Search Engine Optimization - 130 parametri usati da google per valutare il tuo sito

26/08/2010 

Con l'avvento di caffeine molti webmaster si sono trovati a dover rivedere tutte le strategie SEO per i…

in:Scripts e tutorials (0 commenti)

Inserisci Google BUZZ nel tuo sito con Google Buzz Widget Jquery Plugin

15/02/2010 

Questo è un widget di jQuery per il nuovo social network di Google-Buzz-che è possibile incorporare ovunque per…

in:Scripts e tutorials (0 commenti)

Javascript - Codifica/decodifica di password nei file ste di Dreamweaver

17/01/2010 

Questo é un pratico codificatore/decodificatore/decriptatore (chiamatelo come volete) di password inserite nei file di configurazione .ste su dreamweaver function…

in:Scripts e tutorials (0 commenti)

PHP - Uno script per calcolare il PageRank di Google

10/01/2010 

Il PageRank è un algoritmo che usa Google per valutare la credibilità e l'autorevolezza delle pagine Web. Il…

in:Scripts e tutorials (8 commenti)

PHP - Download file con limite di velocita'

20/10/2009 

Con questo script possiamo limitare il download di un file dal nostro server php; il limite di velocitá…

in:Scripts e tutorials (0 commenti)

PHP - Salvare immagini remote sul proprio server usando CURL

12/10/2009 

Alcuni host hanno disabilitati nei settaggi del.ini i comandi allow_url_fopen. Questo significa anche non poter usare i vantaggi…

in:Scripts e tutorials (2 commenti)

PHP - Short Url: due funzioni per creare link brevi

06/10/2009 

Gli SHORT URLS fanno ormai parte di quelle cose di internet che ci suonono terribilmente familiari; per capirci…

in:Scripts e tutorials (0 commenti)

Leggi tutto »


Tag Clouds


Linux comandi principaliSearch Engine Optimization parametri usati google valutare sitoInserisci Google BUZZ sito Google Buzz Widget Jquery PluginJavascript Codificadecodifica password file DreamweaverPHP script calcolare PageRank GooglePHP Download file limite velocitaPHP


Add to Technorati Favorites