Linguaggi per webservices:XML e JSON - Fabio Tropia
←
→
Trascrizione del contenuto della pagina
Se il tuo browser non visualizza correttamente la pagina, ti preghiamo di leggere il contenuto della pagina quaggiù
Linguaggi per webservices:XML e JSON
Lo scambio di dati fra microservizi di architetture distribuite pretendono
linguaggi semplici, leggeri e cross-platform che trasportino dati strutturati;
XML (per SOAP) e JSON (per REST) sono i linguaggi principe di tali applicazioni
XML (eXtensible Markup Language) è un linguaggio descrittivo orientato
alla trasmissione dei dati, “fratello maggiore” del già noto HTML, orientato alla
Descrizione dei dati per il layout web rappresentato in un browser.
Possiamo anche dire che HTML è un sottoinsieme di XML, sia perché ha
Un campo di azioni più ristretto, sia perché ha dei vincoli che XML non ha,
Tranne uno, XML è CASE SENSITIVE, HTML no.
Principali caratteristiche di XML:
● Nato nel 1998 da W3C come semplificazione di SGML (“padre” di HTML)
● Tag non predefiniti e semanticamente trasportanti informazioni
● Interfaccia multiuso per qualsiasi programma
● Soggetto ad organizzazione del tipo “albero di gerarchia”
● Possibilità di uso di CSS per la rappresentazione (poco impiegato)
● Necessità di documenti rigorosamente well-formed
● Prologo obbligatorio con metadati
● Possibilità di commenti (stessa sintassi dell’HTML)
● Istruzioni di processo (per interfacciamento con linguaggi di programmazione)
● Uso dei DTD (document type definition)
● Uso di URL
● Namespace (come in C++) per evitare conflitti di scope nei tag dello stesso documentoLinguaggi per webservices:XML e JSON
● I tag di xml hanno la stessa sintassi ... dei tag open-
close di html, ma non sono predefiniti, sono generati da chi usa il linguaggio
xml a seconda della necessità dello sviluppatore
● Possono essere utilizzati gli attributi, ma si consiglia di farlo con cautela per
non complicare troppo il linguaggio e perdere di vista l’albero delle gerarchie.
Ogni attributo deve OBBLIGATORIAMENTE essere messo fra doppi apici
● Non esistono tag di tipo “empty” (es. HTML )
Un documento well-formed non deve
contenere errori di sintassi, altrimenti il
suo parsing potrebbe essere sbagliato e
portare gravi errori per i quali non si
tratta di pagine web mal visualizzate
ma di informazioni errate che potrebbero
generare seri bug nel programma!
● Prologo obbligatorio con v1.0
● Attributi fra apici
● Rispetto del case-sensitive
● Niente spazi nel tag
● No tag inizianti per numero
● Niente caratteri speciali nei tag
● Impossibile l’uso di accenti nei tag
● Ogni tag aperto deve essere chiuso Il parsing è l’interpretazione
● Tag “parent” chiuso dopo il suo “child” dei dati trasmessi da XML
● Esistenza di un solo elemento radice per essere strutturati
all’interno del programma
di utilizzo degli stessiLinguaggi per webservices:XML e JSON
Il prologo XML non contiene dei dati veri e propri, ma metadati (informazioni sul
documento XML), utili ai programmi che utilizzeranno quell’XML, come, ad esempio,
informazioni sulla versione XML, sul set di caratteri utilizzato, sulla struttura etc.
Il prologo è posto ad inizio del documento può contenere:
● Una dichiarazione XML (obbligatoria)
● DTD
● Commenti
● Istruzioni di processo I Document Type Definition validano la
struttura del documento, evitando la
comparsa di elementi estranei e quindi
assicurano coerenza e congruenza dei
racchiuse fra come la dichiarazione XML, valori trasmessi.
sono utilizzate per comunicare informazioni a Es. una data trasmessa come 2018-03-15 è
programmi esterni al documento. diversa da una trasmessa come 15/3/18 pur
La loro forma standard è: portando la stessa informazione.
Il target è obbligatorio e indica un’applicazione e Si possono usare DTD comuni o standard,
possono trovarsi ovunque all’interno del documento basta dichiararli nel prologo con la sintassi
Esempio:
Esempio
] >
presente l’attributo sesso e che il
nome venga prima del cognome.
La sintassi dei DTD richiede uno studio
dedicato che si consiglia di approfondire
#PCDATA =
elemento di
testoLinguaggi per webservices:XML e JSON
Esempio di uso di XML per la trasmissione di un database relazionale
...altre
tabelle...
Segue codifica di esempio...Linguaggi per webservices:XML e JSON Esempio di uso di XML per la trasmissione di un database relazionale
Linguaggi per webservices:XML e JSON
Cenni su XSD
Uno dei principali vantaggi dell’XML Schema rispetto ai DTD di XML 1.0 è
l’esistenza dei tipi di dati, ad esempio il contenuto di un elemento
con DTD deve essere specificato come #PCDATA (qualsiasi
testo) e quindi: un documento contenente ad esempio
ABC21
verrebbe tranquillamente validato dal parser senza segnalare errori.
Gli schemi promettono di risolvere questi problemi garantendo una validazione
più potente introducendo ad esempio dei tipi di dato, permettendo di specificare
quindi che il contenuto dell’elemento è un numero intero.
Inoltre gli XML Schema sono essi stessi dei documenti XML, mentre i DTD
sono un qualcosa di “estraneo”, perché definiti con un linguaggio a parte
integrato su XML, così come ad esempio i CSS si integrano con HTML.
Esempio:Linguaggi per webservices:XML e JSON Poichè è facile, riguardo al SOAP, confondere XSD con WSDL, ecco un chiarimento: ● WSDL (linguaggio di descrizione dei servizi Web) descrive il servizio e le sue operazioni: come viene chiamato il servizio, quali metodi offre, quale tipo di parametri e valori di ritorno hanno questi metodi? È, quindi, una descrizione del comportamento del servizio: è la funzionalità. ● XSD (Xml Schema Definition) descrive la struttura statica dei tipi di dati complessi scambiati da tali metodi di servizio. Descrive i tipi, i loro campi, eventuali restrizioni su quei campi (come la lunghezza massima o un modello regex) e così via. In pochissime parole WSDL contiene XSD ed in WSDL si possono dichiarare operazioni, ma non in XSD.
Linguaggi per webservices:XML e JSON
JSON (JavaScript Object Notation) è un linguaggio descrittivo sottoinsieme di
Javascript, orientato alla trasmissione dei dati, nato nell’integrazione dei dati
client-side ed oggi molto diffuso per la trasmissione di dati nei microservizi
dell’architettura SOA, segnatamente fra i media-type REST
Principali caratteristiche di JSON:
● Possiede una sintassi per istanziare oggetti complessi dinamicamente
● Non esiste il concetto di classe
● Aggiunta dinamica di nuove proprietà di un oggetto
● Uguale trattazione di liste, mappe, array e strutture
● Autotipizzazione e casting dinamico dei valori
● Costituito da due soli concetti: oggetto e lista (object and array)
Oggetto: una coppia nome/valore separata
da due punti, ogni oggetto è Ogni elemento è ricondotto
distinto dall’altro con una virgola a queste due primitive che vengono
combinate fra loro ricorsivamente
per strutturare l’intero
documento
Lista: una sequenza ordinata di valoriLinguaggi per webservices:XML e JSON
Valori accettati da JSON
● Tutte le stringhe unicode (fra doppi apici)
Tipi complessi (come date, ad
● Numeri di qualsiasi tipo
esempio) vengono trattate
● Sequenze di escape “C style”
come semplici stringhe
● Valori booleni
● Liste (che possono contenere oggetti di tipo fra loro diverso)
● Altri oggetti
Non esistono tipi predefiniti,
gli oggetti si autotipizzano
Anche tramite contenuto
JSON
sottende il
concetto
di albero
gerarchicoLinguaggi per webservices:XML e JSON
Java e JSON
Il metodo .put() crea
oggetti JSON, il .get()
interroga le proprietà
degli oggetti, mentre il
metodo .parse() viene
usato per leggere un
JSON presente in una
stringa
La libreria GSON di Google è utile per conversioni di oggetti
JSON→ Java e viceversa.
GSON può lavorare con qualsiasi oggetto Java, anche un oggetto per
il quale non si dispone del codice e già esistente nel codice stesso.Linguaggi per webservices:XML e JSON
Rifacendoci al già visto esempio sul mini-DB relazionale:
{“azienda”:[
{“cliente”:[
{“id”:1,”nome”:”tizio”,”cognome”:”caio”,
“indirizzo”:”via pinco pallino,38”,
“fattura”:[
{“numero”:”100/2015”,”data”:
”17/05/2015”,”importo”:350},
{“numero”:”107/2015”,”data”:
”11/06/2015”,”importo”:75.62}]},
{“id”:2,”nome”:”sempronio”,”cognome”:
”rossi”,“indirizzo”:”via vattelapesca, 2”, Esistono librerie open-source
“fattura”:[ che traducono automaticamente
… tramite php RDB in JSON
… (o XML), anche se conviene
… sempre “monitorare”
}]} la loro azione
]}
]}Puoi anche leggere