Compartilhar via


LINQ to XML versus outras tecnologias XML

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

Para ver uma comparação do LINQ to XML com DOM (Modelo de Objeto do Documento), confira LINQ to XML vs DOM.

LINQ to XML vs. XmlReader

A classe XmlReader é um analisador rápido, somente encaminhamento e não armazenado em cache.

LINQ to XML é implementado com base no XmlReader, e eles são fortemente 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 que os documentos tenham a mesma estrutura, o que significa que você só precisará criar uma única implementação do código para analisar o XML. Nesse caso, você provavelmente gostaria de usar XmlReader diretamente.

Por outro lado, se você estiver construindo um sistema que analisa vários documentos XML menores, todos diferentes, convém aproveitar as vantagens das melhorias de produtividade que o LINQ to XML proporciona.

LINQ to XML vs. XSLT

Tanto LINQ to XML quanto XSLT contam com funcionalidades abrangentes de transformação de documentos XML. A linguagem XSLT é uma abordagem declarativa baseada em regras. Programadores avançados de XSLT criam XSLT em um estilo funcional de programação que enfatiza uma abordagem sem estado. As transformações podem ser criadas com o uso de funções puras que são implementadas sem efeitos colaterais. Essa abordagem funcional baseada em regras é desconhecida para muitos desenvolvedores e sua compreensão pode ser difícil e demorada.

A linguagem XSLT pode ser um sistema produtivo que gera aplicativos de alto desempenho. Por exemplo, algumas grandes empresas da Web usam XSLT para gerar HTML de XML extraído de diferentes tipos de repositórios de dados. O mecanismo XSLT gerenciado compila XSLT em código CLR (Common Language Runtime) e é executado ainda melhor em alguns cenários do que o mecanismo XSLT nativo.

No entanto, XSLT não aproveita as vantagens dos conhecimentos de C# e de Visual Basic que muitos desenvolvedores têm. Ela requer que os desenvolvedores criem 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 que são mais difíceis de desenvolver e manter.

Depois de se tornar proficiente em usar expressões de consulta LINQ to XML, transformações do 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 objetos XElement dinamicamente e montando o todo em uma nova árvore XML. A transformação pode gerar um documento completamente novo. Construir transformações no LINQ to XML é relativamente fácil e intuitivo e o código resultante é legível. Isso reduz custos de desenvolvimento e de manutenção.

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

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

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

LINQ to XML vs. MSXML

MSXML é a tecnologia baseada em COM para processar XML que vem incluída no Microsoft Windows. A tecnologia MSXML fornece uma implementação nativa do DOM com suporte para XPath e XSLT. Ela também contém o analisador SAX2 baseado em eventos e não armazenado em cache.

A MSXML tem bom desempenho, é segura por padrão na maioria dos cenários e pode ser acessada em um navegador para realizar processamento XML do lado do cliente em aplicativos em estilo AJAX. A MSXML pode ser usada por meio de qualquer linguagem de programação que seja compatível com o COM, incluindo C++, JavaScript e Visual Basic 6.0.

A MSXML não é recomendada para uso em código gerenciado baseado em CLR.

LINQ to XML vs. XmlLite

XmlLite é um analisador de pull, somente encaminhamento e não armazenado em cache. Os desenvolvedores usam XmlLite principalmente com C++. Não é recomendado que os desenvolvedores usem XmlLite com código gerenciado.

A principal vantagem de XmlLite é ser um analisador XML leve, rápido e seguro na maioria dos cenários. Sua área de superfície de ameaças é pequena. Se você precisar analisar documentos não confiáveis e quiser protegê-los contra ataques de negação de serviço ou da exibição de dados, XmlLite pode ser uma boa opção.

O XmlLite não está integrado ao LINQ (Language-Integrated Query). Essa tecnologia não gera melhorias de produtividade para o programador que são a forma motriz associada ao LINQ.

Confira também