Comparaison de LINQ to XML et des autres technologies XML

Cette rubrique compare LINQ to XML aux technologies XML suivantes : XmlReader, XSLT, MSXML et XmlLite. Ces informations peuvent vous aider à décider quelles technologies utiliser.

Pour une comparaison de LINQ to XML ay modèle DOM (Document Objet Model), consultez LINQ to XML et DOM.

Comparaison de LINQ to XML et de XmlReader

XmlReader est un analyseur rapide, avant uniquement et sans mise en cache.

LINQ to XML est implémenté sur XmlReader et ils sont étroitement intégrés. Vous pouvez cependant aussi utiliser XmlReader directement.

Par exemple, supposez que vous créez un service web qui va analyser des centaines de documents XML par seconde et que les documents ont la même structure, ce qui signifie que vous n’avez qu’une seule implémentation du code à écrire pour analyser le XML. Dans ce cas, vous voudrez probablement utiliser XmlReader directement.

En revanche, si vous créez un système qui analyse beaucoup de petits documents XML et que chacun d’eux est différent, il est préférable de tirer parti des améliorations de productivité fournies par LINQ to XML.

Comparaison de LINQ to XML et XSLT

LINQ to XML et XSLT fournissent tous deux des fonctionnalités étendues de transformation de documents XML. XSLT est une approche déclarative basée sur des règles. Les programmeurs XSLT expérimentés écrivent du code XSLT dans un style de programmation fonctionnelle qui met l'accent sur une approche sans état. Les transformations peuvent être écrites à l'aide de fonctions pures implémentées sans effets secondaires. Cette approche fonctionnelle ou basée sur des règles est peu connue de la plupart des développeurs et son apprentissage peut être long et difficile.

XSLT peut être un système productif qui génère des applications hautes performances. Par exemple, certaines grandes sociétés basées du web utilisent XSLT afin de générer du code HTML à partir de code XML extrait de différents types de magasins de données. Le moteur XSLT managé compile XSLT en code CLR et, dans certains scénarios, offre des performances encore meilleures que le moteur XSLT natif.

Cependant, XSLT ne tire pas parti des connaissances de nombreux développeurs en C# et Visual Basic. Il exige des développeurs qu'ils écrivent du code dans un langage de programmation différent et complexe. L'utilisation de deux systèmes de développement non intégrés tels que C# (ou Visual Basic) et XSLT rend les systèmes logiciels plus difficiles à développer et à gérer.

Une fois que vous êtes devenu compétent dans l’utilisation d’expressions de requête LINQ to XML, les transformations LINQ to XML sont une technologie puissante et facile à utiliser. En résumé, vous formez votre document XML en utilisant la construction fonctionnelle, en extrayant des données de diverses sources, en construisant des objets XElement de manière dynamique et en assemblant l'ensemble dans une nouvelle arborescence XML. La transformation peut générer un document complètement nouveau. La construction de transformations dans LINQ to XML est relativement facile et intuitive, et le code obtenu est bien lisible. Cela permet de réduire les coûts de développement et de maintenance.

LINQ to XML n’est pas destiné à remplacer XSLT. XSLT est toujours l’outil de prédilection pour les transformations XML complexes et centrées sur les documents, en particulier si la structure du document n’est pas bien définie.

XSLT présente l'avantage d'être une norme World Wide Web Consortium (W3C). Si vous avez l'obligation d'utiliser des technologies qui constituent des normes, il peut être plus judicieux d'utiliser XSLT.

Le code XSLT étant du code XML, il peut donc être manipulé par programmation.

Comparaison de LINQ to XML et MSXML

MSXML est une technologie basée sur COM pour le traitement du code XML qui est fournie avec Microsoft Windows. MSXML fournit une implémentation native du modèle DOM avec prise en charge de XPath et XSLT. Il contient également l'analyseur sans mise en cache et basé sur les événements SAX2.

MSXML offre de bonnes performances, est sécurisé par défaut dans la plupart des scénarios et est accessible dans un navigateur pour effectuer le traitement XML du côté client dans des applications de style AJAX. MSXML peut être utilisé à partir de n’importe quel langage de programmation qui prend en charge COM, notamment C++, JavaScript et Visual Basic 6.0.

L’utilisation de MSXML n’est pas recommandée dans du code managé basé sur le CLR.

Comparaison de LINQ to XML et de XmlLite

XmlLite est un analyseur de type extraction, avant uniquement et sans mise en cache. Les développeurs utilisent principalement XmlLite avec C++. Il n’est pas recommandé aux développeurs d’utiliser XmlLite avec du code managé.

L’avantage principal de XmlLite est sa légèreté et sa rapidité d’analyse du XML, et il est sécurisé dans la plupart des scénarios. Sa surface d’exposition aux menaces est petite. Si vous devez analyser des documents non approuvés et que vous souhaitez vous protéger contre les attaques de type déni de service ou exposition de données, XmlLite peut constituer un bon choix.

XmlLite n’est pas intégré à Language-Integrated Query (LINQ). Il ne procure pas les améliorations de productivité des programmeurs qui constituent le facteur de motivation associé à LINQ.

Voir aussi