Partilhar via


LINQ to XML vs. outras tecnologias XML

Este artigo compara LINQ to XML com as seguintes tecnologias XML: XmlReader, XSLT, MSXML e XmlLite. Essas informações podem ajudá-lo a decidir quais tecnologias usar.

Para obter uma comparação de LINQ to XML com o Document Object Model (DOM), consulte LINQ to XML vs. DOM.

LINQ to XML vs. XmlReader

XmlReader é um analisador rápido, somente para encaminhamento e sem cache.

O LINQ to XML é implementado sobre XmlReadero , e eles estão totalmente integrados. No entanto, você também pode usar XmlReader diretamente.

Por exemplo, suponha que você esteja criando um serviço Web que analisará centenas de documentos XML por segundo e os documentos tiverem a mesma estrutura, o que significa que você só precisa escrever uma implementação do código para analisar o XML. Neste caso, você provavelmente gostaria de usar XmlReader diretamente.

Por outro lado, se você estiver criando um sistema que analisa muitos documentos XML menores e cada um for diferente, convém aproveitar as melhorias de produtividade que o LINQ to XML oferece.

LINQ para XML vs. XSLT

Tanto o LINQ to XML quanto o XSLT fornecem amplos recursos de transformação de documentos XML. XSLT é uma abordagem declarativa baseada em regras. Programadores XSLT avançados escrevem XSLT em um estilo de programação funcional que enfatiza uma abordagem sem estado. As transformações podem ser escritas usando funções puras que são implementadas sem efeitos colaterais. Essa abordagem funcional ou baseada em regras não é familiar para muitos desenvolvedores e pode ser difícil e demorada de aprender.

O XSLT pode ser um sistema produtivo que produz aplicações de alto desempenho. Por exemplo, algumas grandes empresas da Web usam XSLT como uma maneira de gerar HTML a partir de XML que foi extraído de diferentes tipos de armazenamentos de dados. O mecanismo XSLT gerenciado compila XSLT para código CLR (Common Language Runtime) e tem um desempenho ainda melhor em alguns cenários do que o mecanismo XSLT nativo.

No entanto, XSLT não aproveita o conhecimento de C# e Visual Basic que muitos desenvolvedores têm. Ele requer que os desenvolvedores escrevam código em uma linguagem de programação diferente e complexa. O uso de dois sistemas de desenvolvimento não integrados, como C# (ou Visual Basic) e XSLT, resulta em sistemas de software mais difíceis de desenvolver e manter.

Depois de se tornar proficiente no uso de expressões de consulta LINQ to XML, as transformações LINQ to XML são uma tecnologia poderosa e fácil de usar. Basicamente, você forma seu documento XML usando construção funcional, extraindo dados de várias fontes, construindo XElement objetos dinamicamente e montando o todo em uma nova árvore XML. A transformação pode gerar um documento completamente novo. A construção de transformações em LINQ to XML é relativamente fácil e intuitiva, e o código resultante é legível. Isso reduz os custos de desenvolvimento e manutenção.

O LINQ to XML não se destina a substituir o XSLT. O XSLT ainda é a ferramenta preferida para transformações XML complicadas e centradas em documentos, especialmente se a estrutura do documento não estiver bem definida.

XSLT tem a vantagem de ser um padrão W3C (World Wide Web Consortium). Se você tiver um requisito de usar apenas tecnologias que são padrões, o XSLT pode ser mais apropriado.

XSLT é XML, e é por isso que ele pode ser programaticamente manipulado.

LINQ to XML vs. MSXML

MSXML é a tecnologia baseada em COM para processamento de XML incluída no Microsoft Windows. O MSXML fornece uma implementação nativa do DOM com suporte para XPath e XSLT. Ele também contém o analisador baseado em eventos sem cache SAX2.

O MSXML tem um bom desempenho, é seguro por padrão na maioria dos cenários e pode ser acessado em um navegador para fazer processamento XML do lado do cliente em aplicativos no estilo AJAX. O MSXML pode ser usado a partir de qualquer linguagem de programação que ofereça suporte a COM, incluindo C++, JavaScript e Visual Basic 6.0.

O MSXML não é recomendado para uso em código gerenciado com base no CLR.

LINQ to XML vs. XmlLite

O XmlLite é um analisador pull que não armazena em cache, somente para frente. Os desenvolvedores usam principalmente o XmlLite com C++. Não é recomendado que os desenvolvedores usem o XmlLite com código gerenciado.

A principal vantagem do XmlLite é que ele é um analisador XML leve e rápido que é seguro na maioria dos cenários. Sua área de superfície de ameaça é pequena. Se você precisa analisar documentos não confiáveis e deseja se proteger contra ataques como negação de serviço ou exposição de dados, o XmlLite pode ser uma boa opção.

O XmlLite não está integrado ao LINQ (Language-Integrated Query). Ele não produz as melhorias de produtividade do programador que são a força motivadora por trás do LINQ.

Consulte também