Differences between revisions 24 and 25
Revision 24 as of 2018-03-05 18:27:45
Size: 9555
Editor: m.secone
Comment:
Revision 25 as of 2018-03-05 20:58:48
Size: 9559
Editor: m.secone
Comment:
Deletions are marked like this. Additions are marked like this.
Line 9: Line 9:

=== JSON ===
'''JSON '''('''''Javascript Object Notation''''') è un formato ormai standard di interscambio dei dati, basato sulla struttura degli oggetti e degli array in JavaScript e viene usato come alternativa a XML/XSLT.

JSON è un formato di testo completamente indipendente dal linguaggio di programmazione, facile da leggere e scrivere per le persone, mentre per le macchine risulta facile da generare e analizzarne la sintassi.

JSON si basa su un sottoinsieme del Linguaggio di Programmazione JavaScript, Standard ECMA-262 Terza Edizione - Dicembre 1999. JSON quindi non è stato creato nel senso letterale del termine, poichè la notazione letterale degli oggetti è una delle caratteristiche già presenti nel linguaggio JavaScript. Si può dire che JSON sia stato riscoperto come formato per lo scambio dati specialmente nella programmazione in AJAX.

Il seguente esempio rappresenta i dati dell'anagrafica di una persona in formato JSON:

{{{
{
        "name": "Mario",
        "surname": "Rossi",
        "active": true,
        "favoriteNumber": 42,
        "birthday": {
                "day": 1,
                "month": 1,
                "year": 2000
        },
        "languages": ["it", "en"]
}
}}}

Maggiori informazioni al seguente indirizzo: https://www.json.org
Line 69: Line 96:
=== JSON ===
'''JSON '''('''''Javascript Object Notation''''') è un formato ormai standard di interscambio dei dati, basato sulla struttura degli oggetti e degli array in JavaScript e viene usato come alternativa a XML/XSLT.

JSON è un formato di testo completamente indipendente dal linguaggio di programmazione, facile da leggere e scrivere per le persone, mentre per le macchine risulta facile da generare e analizzarne la sintassi.

JSON si basa su un sottoinsieme del Linguaggio di Programmazione JavaScript, Standard ECMA-262 Terza Edizione - Dicembre 1999. JSON quindi non è stato creato nel senso letterale del termine, poichè la notazione letterale degli oggetti è una delle caratteristiche già presenti nel linguaggio JavaScript. Si può dire che JSON sia stato riscoperto come formato per lo scambio dati specialmente nella programmazione in AJAX.

Il seguente esempio rappresenta i dati dell'anagrafica di una persona in formato JSON:

{{{
{
        "name": "Mario",
        "surname": "Rossi",
        "active": true,
        "favoriteNumber": 42,
        "birthday": {
                "day": 1,
                "month": 1,
                "year": 2000
        },
        "languages": ["it", "en"]
}
}}}
Maggiori informazioni al seguente indirizzo: https://www.json.org

Integrazione con sistemi informativi esterni (guida per le software house)

Nella seguente sezione viene resa disponibile una guida su come integrare i propri sistemi informativi con il Sistema Informativo Nazionale della Farmacosorveglianza.

Le tecnologie adottate

Viene fornita una panoramica generale, che vuole essere solo una guida introduttiva e non una trattazione esaustiva, sulle tecnologie e metodologie generali previste per l'integrazione dei sistemi informativi esterni con il Sistema Informativo Nazionale della Farmacosorveglianza.

JSON

JSON (Javascript Object Notation) è un formato ormai standard di interscambio dei dati, basato sulla struttura degli oggetti e degli array in JavaScript e viene usato come alternativa a XML/XSLT.

JSON è un formato di testo completamente indipendente dal linguaggio di programmazione, facile da leggere e scrivere per le persone, mentre per le macchine risulta facile da generare e analizzarne la sintassi.

JSON si basa su un sottoinsieme del Linguaggio di Programmazione JavaScript, Standard ECMA-262 Terza Edizione - Dicembre 1999. JSON quindi non è stato creato nel senso letterale del termine, poichè la notazione letterale degli oggetti è una delle caratteristiche già presenti nel linguaggio JavaScript. Si può dire che JSON sia stato riscoperto come formato per lo scambio dati specialmente nella programmazione in AJAX.

Il seguente esempio rappresenta i dati dell'anagrafica di una persona in formato JSON:

{
        "name": "Mario",
        "surname": "Rossi",
        "active": true,
        "favoriteNumber": 42,
        "birthday": {
                "day": 1,
                "month": 1,
                "year": 2000
        },
        "languages": ["it", "en"]
}

Maggiori informazioni al seguente indirizzo: https://www.json.org

SOAP vs REST

Allo stato attuale esistono due approcci alla creazione di Web Service:

  • un approccio è basato sul protocollo standard SOAP (Simple Object Access Protocol), per lo scambio di messaggi per l’invocazione di servizi remoti;

  • un secondo approccio è basato sulla descrizione di risorse, sul modo di individuarle nel Web e sul modo di trasferirle da una macchina all’altra (approccio che prende il nome di REST - REpresentational State Transfer).

La prima evidente differenza tra i due tipi di Web Service è la visione del Web proposta come piattaforma di elaborazione. REST propone una visione del Web incentrata sul concetto di risorsa mentre i SOAP Web Service mettono in risalto il concetto di servizio:

  • un Web Service RESTful è custode di un insieme di risorse sulle quali un client può chiedere le operazioni canoniche del protocollo HTTP;
  • un Web Service basato su SOAP espone un insieme di metodi richiamabili da remoto da parte di un client.

Formalmente, REST definisce un insieme di principi architetturali per la progettazione di un sistema. Rappresenta uno stile architetturale che vede il Web come una piattaforma per l’elaborazione distribuita. L’approccio REST si basa sui seguenti principi:

  • Identificazione delle risorse;
  • Utilizzo esplicito dei metodi HTTP;
  • Risorse autodescrittive;
  • Collegamenti tra risorse;
  • Comunicazione senza stato.

L’approccio dei SOAP Web service ha mutuato un’architettura applicativa denominata SOA, Service Oriented Architecture, a cui si è recentemente contrapposta l’architettura ROA,Resource Oriented Architecture, ispirata ai principi REST.

Il protocollo SOAP (Simple Object Access Protocol) definisce una struttura dati per lo scambio di messaggi tra applicazioni, riproponendo in un certo senso parte di quello che il protocollo HTTP faceva già. SOAP utilizza HTTP come protocollo di trasporto, ma non è limitato nè vincolato ad esso, dal momento che può benissimo usare altri protocolli di trasporto.

A differenza di HTTP, però, le specifiche di SOAP non affrontano argomenti come la sicurezza o l’indirizzamento, per i quali sono stati definiti standard a parte, nello specifico WS-Security e WS-Addressing.

Quindi SOAP non sfrutta a pieno il protocollo HTTP, utilizzandolo come semplice protocollo di trasporto. REST invece sfrutta HTTP per quello che è, un protocollo di livello applicativo, e ne utilizza a pieno le potenzialità.

REST non prevede esplicitamente nessuna modalità per descrivere come interagire con una risorsa. Le operazioni sono implicite nel protocollo HTTP. Qualcosa di analogo a WSDL è WADL, Web Application Definition Language, un’applicazione XML per definire risorse, operazioni ed eccezioni previsti da un Web Service di tipo REST.

Negli ultimi anni l’approccio REST è venuto alla ribalta come metodo per la realizzazione di Web Service altamente efficienti e scalabili ed ha al suo attivo un significativo numero di applicazioni. Il motivo è semplice: dal momento che il Web ha tutto quello che serve per essere considerata una piattaforma di elaborazione distribuita secondo i principi REST, non sono necessarie altre sovrastrutture per realizzare quello che è il Web programmabile.

L’approccio REST è attualmente lo standard "de-facto" per la realizzazione di Web Service altamente efficienti e scalabili.

SERVIZI REST

I Web service consentono di far interagire due applicazioni indipendentemente dal sistema operativo su cui girano e dal linguaggio di programmazione utilizzato. L'approccio ai Web service adottato per il Sistema Informativo Nazionale della Farmacosorveglianza è l'approccio REST (Representational State Transfer).

REST definisce un insieme di principi architetturali per la progettazione di un sistema: rappresenta uno stile architetturale, cioè non si riferisce ad un sistema concreto e ben definito nè si tratta di uno standard stabilito da un organismo di standardizzazione.

In sintesi, nella visione RESTful un Web service non definisce una funzione richiamabile da remoto ma mette a disposizione delle risorse su cui è possibile effettuare le classiche operazioni CRUD sfruttando i metodi del protocollo HTTP. Una risorsa è generalmente un’istanza di una classe che viene inviata al client dopo averla serializzata. Ciascuna risorsa è rintracciabile sul Web tramite uno specifico URI. La gestione dei metodi HTTP applicabili alle risorse è affidata ai Controller, un tipo di classe i cui metodi implementano le richieste giunte all’applicazione via HTTP.

Le caratteristiche principali di REST sono:

  • le risorse sono sempre identificate da un URI univoco;
  • le azioni effettuate sulle risorse sono veicolate attraverso i verbi HTTP:
    • GET,
    • POST,
    • PUT/PATCH,
    • DELETE;
  • il client ha la possibilità di negoziare il formato dei dati che si attende come risposta:
    • XML,
    • SON.

In sostanza, un client richiede l’esecuzione di un metodo HTTP, ad esempio GET, su una risorsa identificata da un URI. Il server, interpretando l’URI, individua il controller associato alla risorsa e, in base allo specifico metodo HTTP ed ai parametri specificati dal client, invoca il metodo corrispondente. Il risultato dell’esecuzione del metodo è una risorsa e/o un codice di stato HTTP. Se viene restituita una risorsa, questa viene serializzata in base al formato richiesto dal client tramite l’intestazione HTTP Accept.

Maggiori informazioni al seguente indirizzo:

Sicurezza

Vengono di seguito descritti i protocolli e tecnologie adottate per garantire la sicurezza delle API esposte come servizi WEB dal Sistema Informativo Nazionale della Farmacosorveglianza.

Protocollo di autenticazione in ambiente di test

Un aspetto importante di REST è la gestione della sicurezza: le risorse esposte via Web devono essere accessibili e manipolabili soltanto dagli utenti autorizzati. In altre parole, si ha bisogno di un meccanismo per gestire l’autenticazione degli utenti e l’autorizzazione all’accesso delle risorse. Dal momento che le API di tipo RESTful si ispirano all’adozione di HTTP come protocollo centrale, l’approccio migliore da adottare nell’implementazione di un meccanismo di autenticazione è la HTTP Basic Authentication. Esso si basa essenzialmente nell’invio di nome utente e password con ogni richiesta HTTP. Dal momento, però, che le credenziali vengono inviate in chiaro, è opportuno che esse viaggino all’interno di un canale sicuro HTTPS, cioè HTTP over SSL/TLS.

Protocollo di autenticazione in ambiente di produzione

L'accesso alle API di servizi web esposte dal Sistema Informativo Nazionale della farmacosorveglianza è protetto utilizzando access tokens. Più in particolare l'infrastruttura dei servizi esposti dal Sistema Informativo Nazionale della Farmacosorveglianza, relativamente alla parte di autenticazione e autorizzazione, è stata realizzata basandosi sul framework OAuth2, definito nell’rfc6749 (https://tools.ietf.org/html/rfc6749).

OAuth2

I dettagli tecnici del framework OAuth2 possono essere recuperati dai seguenti link:

farmaco/help/integrazione (last edited 2018-08-23 08:58:50 by a.bucciacchio)