Diferencias entre LINQ to XML y otras tecnologías XML

En este artículo se compara LINQ to XML con las siguientes tecnologías XML: XmlReader, XSLT, MSXML y XmlLite. Esta información puede ayudarle a decidir las tecnologías que utilizará.

Para ver una comparación de LINQ to XML con Document Object Model (DOM), consulte LINQ to XML y DOM.

LINQ to XML frente a XmlReader

XmlReader es un analizador rápido, de solo avance y sin almacenamiento en caché.

LINQ to XML se implementa sobre XmlReader y ambos están estrechamente integrados. Sin embargo, puede utilizar también XmlReader directamente.

Por ejemplo, supongamos que está creando un servicio web que analizará cientos de documentos XML por segundo y los documentos tienen la misma estructura, lo que significa que solo tiene que escribir una implementación de código para analizar el XML. En este caso, probablemente quiera usar XmlReader directamente.

Por el contrario, si crea un sistema que analiza muchos documentos XML más pequeños y cada uno es diferente, quizás quiera aprovechar las mejoras de productividad que LINQ to XML proporciona.

LINQ to XML frente a XSLT

LINQ to XML y XSLT proporcionan amplias capacidades de transformación de documentos XML. XSLT es un enfoque declarativo basado en reglas. Los programadores de XSLT avanzado escriben XSLT en un estilo de programación funcional que resalta un enfoque sin estado. Las transformaciones se pueden escribir con funciones puras que se implementan sin efectos secundarios. Este enfoque basado en reglas o funcional no es familiar para muchos desarrolladores y su aprendizaje puede requerir bastante tiempo.

XSLT puede ser un sistema productivo que genera aplicaciones de alto rendimiento. Por ejemplo, algunas grandes compañías web utilizan XSLT como forma de generar HTML a partir de XML extraído de diversos tipos de almacenes de datos. El motor XSLT administrado compila código XSLT a CLR (Common Language Runtime) y tiene un rendimiento incluso mejor en algunos escenarios que el motor XSLT nativo.

No obstante, XSLT no aprovecha el conocimiento de C# y Visual Basic que muchos desarrolladores tienen. Requiere que los desarrolladores escriban código en un lenguaje de programación complejo y diferente. Usar dos sistemas de desarrollo diferentes no integrados como C# (o Visual Basic) y XSLT tiene como resultado sistemas de software que son más difíciles de desarrollar y mantener.

Una vez que se haya convertido en un experto en el uso de expresiones de consulta de LINQ to XML, las transformaciones de LINQ to XML constituyen una tecnología eficaz que es fácil de usar. Básicamente, se forman documentos XML utilizando construcciones funcionales, extrayendo datos de varios orígenes, construyendo objetos XElement dinámicamente y ensamblando el conjunto en un nuevo árbol XML. La transformación puede generar un documento completamente nuevo. La construcción de transformaciones en LINQ to XML es relativamente sencilla e intuitiva y el código resultante es legible. Esto reduce los costos de desarrollo y mantenimiento.

LINQ to XML no está pensado para reemplazar XSLT. XSLT sigue siendo la herramienta preferida de transformaciones XML complicadas y basadas en documentos, especialmente si la estructura del documento no está bien definida.

XSLT tiene la ventaja de que es un estándar de World Wide Web Consortium (W3C). Si tiene el requisito de usar solamente tecnologías que son estándares, XSLT puede ser más adecuado.

XSLT es XML y, por lo tanto, se puede manipular mediante programación.

LINQ to XML frente a MSXML

MSXML es la tecnología basada en COM utilizada para procesar XML y que se incluye con Microsoft Windows. MSXML ofrece una implementación nativa de DOM, que es compatible con XPath y XSLT. También contiene el analizador basado en eventos y sin almacenamiento en caché SAX2.

MSXML tiene un buen rendimiento, es seguro de forma predeterminada en la mayoría de casos y se puede tener acceso a él en un explorador para realizar procesamiento XML en el cliente en aplicaciones de estilo AJAX. MSXML se puede usar en cualquier lenguaje de programación que admita COM, incluidos C++, JavaScript y Visual Basic 6.0.

No se recomienda el uso de MSXML en código administrado basado en CLR.

LINQ to XML frente a XmlLite

XmlLite es un analizador de extracción sin almacenamiento en caché, de solo avance. Los desarrolladores utilizan principalmente XmlLite con C++. No se recomienda a los desarrolladores usar XmlLite con código administrado.

La principal ventaja de XmlLite es que es un analizador XML rápido y ligero que es seguro en la mayoría de casos. Su área de exposición a amenazas es pequeña. Si debe analizar documentos que no son de confianza y desea protegerse de ataques tales como denegación de servicio o exposición de datos, XmlLite puede ser una buena opción.

XmlLite no está integrado con Language-Integrated Query (LINQ). No proporciona al programador las mejoras de productividad que constituyen el principal objetivo de LINQ.

Consulte también