Condividi tramite


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 e DOM.

LINQ to XML rispetto a XmlReader

XmlReader è un parser veloce, solo avanti, che non utilizza la cache.

LINQ to XML viene implementato su XmlReader ed è strettamente integrato. Tuttavia, è anche possibile usare XmlReader direttamente.

Si supponga, ad esempio, di creare un servizio Web che analizzerà centinaia di documenti XML al secondo e che i documenti abbiano la stessa struttura, vale a dire che è necessario scrivere solo un'implementazione del codice per analizzare il codice XML. In questo caso, è probabile che si voglia usare XmlReader direttamente.

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

LINQ to XML e XSLT

Sia LINQ to XML che XSLT offrono numerose funzionalità di trasformazione dei documenti XML. XSLT è un approccio dichiarativo basato su regole. I programmatori XSLT avanzati scrivono XSLT in uno stile di programmazione funzionale che enfatizza un approccio senza stato. Le trasformazioni possono essere scritte usando funzioni pure implementate senza effetti collaterali. Questo approccio basato su regole o funzionali non è familiare a molti sviluppatori e può essere difficile e dispendioso in termini di tempo per l'apprendimento.

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

Tuttavia, XSLT non sfrutta le conoscenze di C# e Visual Basic disponibili per molti sviluppatori. Richiede agli sviluppatori di scrivere codice in un linguaggio di programmazione diverso e complesso. L'uso di due sistemi di sviluppo non integrati come C# (o Visual Basic) e XSLT comporta sistemi software più difficili da sviluppare e gestire.

Dopo aver appreso la conoscenza dell'uso delle espressioni di query LINQ to XML, le trasformazioni LINQ to XML sono una potente tecnologia facile da usare. Fondamentalmente, si forma il documento XML usando la costruzione funzionale, il pull di dati da varie origini, la costruzione dinamica di XElement oggetti e l'assemblaggio dell'intero 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. In questo modo si riducono i costi di sviluppo e manutenzione.

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

XSLT ha il vantaggio di essere uno standard W3C (World Wide Web Consortium). Se si ha un requisito che si usano solo tecnologie standard, XSLT potrebbe essere più appropriato.

XSLT è XML ed è per questo che può essere manipolato a livello di codice.

LINQ to XML contro MSXML

MSXML è la tecnologia basata su COM per l'elaborazione xml inclusa in Microsoft Windows. MSXML fornisce un'implementazione nativa del DOM con supporto per XPath e XSLT. Contiene anche il parser SAX2, basato su eventi e senza memorizzazione nella cache.

MSXML offre prestazioni elevate, è sicuro per impostazione predefinita nella maggior parte degli scenari e può essere eseguito in un browser per eseguire l'elaborazione XML sul lato client nelle applicazioni in stile AJAX. MSXML può essere usato da qualsiasi linguaggio di programmazione che supporta COM, tra cui C++, JavaScript e Visual Basic 6.0.

MSXML non è consigliato per l'uso nel codice gestito basato su CLR.

LINQ to XML vs XmlLite

XmlLite è un parser a richiesta, senza memorizzazione nella cache, orientato solo in avanti. Gli sviluppatori usano principalmente XmlLite con C++. Non è consigliabile per gli sviluppatori usare XmlLite con codice gestito.

Il vantaggio principale di XmlLite è che è un parser XML leggero e veloce che è sicuro nella maggior parte degli scenari. La superficie di minaccia è piccola. Se è necessario analizzare documenti non attendibili e si vuole proteggersi da attacchi come Denial of Service o esposizione dei dati, XmlLite potrebbe essere un'opzione valida.

XmlLite non è integrato con Language-Integrated Query (LINQ). Non produce i miglioramenti della produttività dei programmatori che sono la forza motivante alla base di LINQ.

Vedere anche