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.

SOAP vs REST

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

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:

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:

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.

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).

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:

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.

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.

Si basa su un sottoinsieme del Linguaggio di Programmazione JavaScript, Standard ECMA-262 Terza Edizione - Dicembre 1999.

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

{

}

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

Sicurezza

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, abbiamo 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 come può essere HTTPS, cioè HTTP over SSL/TLS. L’autenticazione e l’autorizzazione possono inoltre essere implementate basandosi sul concetto Token e sfruttare il Cross-Origin Resource Sharing per dare l’accesso da altri siti alle proprie API.