Confronto di XmlReader con il lettore SAX
Come il lettore SAX (Simple API for XML), XmlReader è un cursore forward-only, di sola lettura, che fornisce all'input un accesso rapido al flusso non memorizzato nella cache. È in grado di leggere un flusso o un documento. Consente all'utente di effettuare il pull dei dati e ignorare i record non rilevanti per l'applicazione. La differenza sostanziale è rappresentata dal fatto che il modello SAX è un modello "push", in cui il parser effettua il push degli eventi nell'applicazione, notificando ogni volta che viene letto un nuovo nodo, mentre le applicazioni che utilizzano XmlReader possono effettuare il pull dei nodi dal lettore quando necessario. I vantaggi del modello pull sono i seguenti:
Vantaggio |
Descrizione |
---|---|
Gestione dello stato |
Il modello push richiede che i gestori del contenuto costruiscano computer di stato molto complessi. Il client del modello pull semplifica la gestione dello stato tramite un perfezionamento naturale della procedura dall'alto in basso. |
Più flussi di input |
Il modello pull consente al client di unire più flussi di input. Si tratta di un'operazione estremamente complessa nel modello push. |
Disposizione su livelli |
Il modello push può essere creato sopra il modello pull. Non è tuttavia possibile il contrario. |
Prevenzione di copie supplementari delle stringhe |
In genere, i dati vengono letti dal buffer del parser nell'oggetto stringa, che viene quindi inserito nel buffer del client. Il modello pull consente al client di fornire al parser un buffer nel quale la stringa viene scritta direttamente. |
Elaborazione selettiva |
Il modello push notifica al client ogni elemento, compresi attributi, istruzioni di elaborazione e spazi vuoti, mentre il client del modello pull può ignorare alcuni elementi ed elaborare solo quelli rilevanti per l'applicazione. Questo consente la creazione di applicazioni estremamente efficienti. Inoltre, è possibile impostare in anticipo le proprietà che incidono sull'elaborazione del flusso XML (ad esempio, la normalizzazione). |