LINQ to XML e altre tecnologie XML

Questo articolo confronta LINQ to XML con le tecnologie XML seguenti: XmlReader, XSLT, MSXML e XmlLite. Queste informazioni consentono di decidere quali tecnologie usare.

Per un confronto tra LINQ to XML e DOM (Document Object Model), vedere LINQ to XML vs. DOM.

Differenze tra LINQ to XML e XmlReader

XmlReader è un parser rapido, di tipo forward-only, che non supporta la memorizzazione nella cache.

LINQ to XML viene implementato sopra XmlReader, e sono strettamente integrati. Tuttavia, è anche possibile usare XmlReader direttamente.

Si supponga, ad esempio, di creare un servizio Web che analizza centinaia di documenti XML al secondo e che i documenti abbiano la stessa struttura, ovvero che è necessario scrivere solo un'implementazione del codice per analizzare il codice XML. In questo caso, probabilmente si vuole usare XmlReader direttamente.

Al contrario, se si sta creando un sistema che analizza molti documenti XML più piccoli e ognuno è diverso, si vuole sfruttare i miglioramenti della produttività offerti da LINQ to XML.

Differenze tra LINQ to XML e XSLT

Sia LINQ to XML che XSLT offrono funzionalità estese di trasformazione dei documenti XML. XSLT è un approccio dichiarativo, basato su regole. I programmatori XSLT avanzati scrivono codice XSLT in uno stile di programmazione funzionale che enfatizza un approccio senza stato. Le trasformazioni possono essere scritte con funzioni pure implementate senza effetti collaterali. Questo approccio basato su regole o funzionale non è noto a tutti gli sviluppatori e può risultare un processo lungo e difficile da apprendere.

XSLT può essere un sistema produttivo che restituisce applicazioni ad alte prestazioni. Ad esempio, alcune grandi aziende Web usano XSLT come modo per generare HTML da XML che è stato eseguito il pull da diversi tipi di archivi dati. Il motore XSLT gestito compila XSLT per il codice CLR (Common Language Runtime) ed esegue prestazioni ancora migliori in alcuni scenari rispetto al motore XSLT nativo.

Tuttavia, XSLT non sfrutta il C# e Visual Basic conoscenza che molti sviluppatori hanno. Richiede la scrittura di codice in un linguaggio di programmazione diverso e complesso. Con l'uso di due sistemi di sviluppo non integrati, quali C# (o Visual Basic) e XSLT, i sistemi software risultanti sono più difficili da sviluppare e mantenere.

Dopo essere diventati esperti nell'uso di espressioni di query LINQ to XML, le trasformazioni LINQ to XML sono una tecnologia potente che è facile da usare. Essenzialmente, il documento XML viene creato usando la costruzione funzionale, recuperando i dati da vari origini, costruendo dinamicamente oggetti XElement e assemblando l'insieme in un nuovo albero XML. La trasformazione può generare un documento completamente nuovo. La creazione di trasformazioni in LINQ to XML è relativamente semplice e intuitiva e il codice risultante è leggibile. con una conseguente riduzione dei costi di sviluppo e manutenzione.

LINQ to XML non è destinato a sostituire XSLT. XSLT è ancora lo strumento di scelta per trasformazioni XML complesse e incentrate sul documento, soprattutto se la struttura del documento non è ben definita.

XSLT presenta il vantaggio di essere uno standard W3C (World Wide Web Consortium). Se è necessario rispettare il requisito di usare solo tecnologie che corrispondono a standard, XSLT può rivelarsi la soluzione più appropriata.

XSLT è XML e questo è il motivo per cui può essere modificato a livello di codice.

Differenze tra LINQ to XML MSXML

MSXML è la tecnologia basata su COM per l'elaborazione di XML inclusa in Microsoft Windows. Fornisce un'implementazione nativa di DOM (Document Object Model) con supporto per XPath e XSLT. Contiene inoltre il parser SAX2 basato su eventi che non supporta la memorizzazione nella cache.

MSXML funziona bene, è sicuro per impostazione predefinita nella maggior parte degli scenari e può essere accessibile in Internet Explorer per eseguire l'elaborazione XML lato client nelle applicazioni in stile AJAX. Può essere usato da qualsiasi linguaggio di programmazione che supporta COM, tra cui C++, JavaScript e Visual Basic 6.0.

MSXML non è consigliabile usare nel codice gestito in base a CLR.

Differenze tra LINQ to XML e XmlLite

XmlLite è un parser di tipo pull e forward-only che non supporta la memorizzazione nella cache. Gli sviluppatori usano XmlLite principalmente con C++. Non è consigliabile per gli sviluppatori usare XmlLite con codice gestito.

Il vantaggio principale di XmlLite è che è un parser XML leggero e veloce sicuro nella maggior parte degli scenari. La sua superficie di minaccia è piccola. Se è necessario analizzare documenti non attendibili e si desidera proteggersi da attacchi di tipo Denial of Service o esposizione di dati, XmlLite rappresenta una buona soluzione.

XmlLite non è integrato con query Language-Integrated (LINQ). Non restituisce i miglioramenti della produttività del programmatore che sono la forza motivante dietro LINQ.

Vedi anche