L'interfaccia di un componente può vincolare pesantemente le sue caratteristiche prestazionali e di usabilità. Un esempio abbastanza significativo è rappresentato dalle tre diverse API che sono state disegnate per il parsing dei documenti XML.
Per l'elaborazione dei documenti XML esistono infatti tre interfacce standard, ciascuna con particolari caratteristiche di prestazione e di usabilità.
Per l'elaborazione dei documenti XML esistono infatti tre interfacce standard, ciascuna con particolari caratteristiche di prestazione e di usabilità.
DOM (Document Object Model)
fornisce una modalità di navigazione all'interno del
documento XML di tipo "ad albero"; il parser, a partire dal documento XML, memorizzato come stream di
byte, crea una struttura in memoria (appunto modello a oggetti del documento)
che rappresenta il documento in tutti i suoi aspetti. Il programmatore
può navigare la struttura ad albero ed accedere in modo diretto (anche usando XPath) ai suoi
elementi e attributi.
SAX (Simple API for XML)
contrariamente
al parser DOM, il parser SAX elabora i documenti in una modalità "a
eventi" (streaming parser) senza caricare in memoria l'interno
documento. Il parser scorre il documento XML dall'inizio alla fine e,
per ciascun elemento XML incontrato e che può essere significativo per
l'elaborazione, produce un evento. L'evento è passato a una funzione di callback che
il programmatore ha definito prima dell'attivazione del parser. Questo tipo di parser è detto parser di tipo "push"
in quanto gli eventi vengono inviati all'utilizzatore del parser senza
che questo possa decidere quando ricevere il successivo evento.
L'elaborazione di documenti XML con un parser SAX richiede la creazione
di uno specifico automa a stati finiti
(dipendente sia dalla struttura dell'XML sia dalla logica applicativa) ed è pertanto abbastanza laboriosa da implementare.
Gli unici vantaggi dei parser SAX sono: l'elevato livello di prestazioni e la ridotta quantità di memoria utilizzata, indipendentemente dalla dimensione del documento da elaborare.
Gli unici vantaggi dei parser SAX sono: l'elevato livello di prestazioni e la ridotta quantità di memoria utilizzata, indipendentemente dalla dimensione del documento da elaborare.
StAX (Streaming API for XML)
è un parser di tipo "a eventi" (streaming parser) che quindi
fornisce le prestazioni e la ridotta occupazione di memoria tipiche dei
parser a eventi, ma che punta a offrire una maggiore comodità di programmazione.
Il parser, infatti, una volta invocato su un documento XML, resituisce al suo utilizzatore un "cursore" che rappresenta la posizione corrente nel documento XML durante l'elaborazione.
L'applicazione, quando vuole ottenere ed elaborare il successivo evento (che rappresenta un elemento XML, nodo o attributo presente nel documento), può pilotare il parser facendo avanzare il cursore.
Per questa particolare modalità di interazione con il client, il parser viene detto di tipo "pull".
L'applicazione, quando vuole ottenere ed elaborare il successivo evento (che rappresenta un elemento XML, nodo o attributo presente nel documento), può pilotare il parser facendo avanzare il cursore.
Per questa particolare modalità di interazione con il client, il parser viene detto di tipo "pull".
In sintesi:
Nessun commento:
Posta un commento