Linguaggi per webservices:XML e JSON - Fabio Tropia

Pagina creata da Manuel Ferrara
 
CONTINUA A LEGGERE
Linguaggi per webservices:XML e JSON - Fabio Tropia
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 documento
Linguaggi per webservices:XML e JSON - Fabio Tropia
Linguaggi 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 stessi
Linguaggi 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
                                                 testo
Linguaggi 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 valori
Linguaggi 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
                                     gerarchico
Linguaggi 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