INFO: O desempenho de transformações XSLT no .NET Framework

Traduções de Artigos Traduções de Artigos
Artigo: 325689 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo contém informações sobre as causas e soluções ou soluções para problemas de desempenho conhecidos que poderão ocorrer quando utilizar o processador XSLT do .NET Framework para executar XSLT transformações.

Transformações de XSLT com XmlDataDocument efectuar lentamente

Aplicar uma transformação XSLT a representação XML dos dados de um ADO.NET DataSet é um requisito de aplicação comuns. O Microsoft .NET Framework classes base a espaços de nomes System.XML são utilizadas em conjunto com o ADO.NET DataSet para implementar este requisito nas aplicações .NET.

System.Xml.xsl.XslTransform é a classe base do .NET Framework utilizada para executar o XSLT transformações. System.Xml.XmlDataDocument System.XML.XmlDocument e System.Xml.XPath.XPathDocument são as três .NET Framework classes base que podem ser utilizadas para carregar e fornecer a representação XML dos dados de um ADO.NET DataSet como a origem XML quando é executada uma transformação XSLT. Destas três opções, utilizando um objecto XmlDataDocument requer o código, pelo menos, uma vez que pode ser sincronizada directamente com um objecto de DataSet quando é instanciado. No entanto, um desempenho lento é um problema comum quando utiliza um objecto XmlDataDocument para aplicar uma transformação XSLT a representação XML de um ADO.NET DataSet . Este comportamento ocorre por predefinição na versão RTM do .NET Framework.

System.Xml.XPath.XPathDocument é a classe mais optimizada para processamento de XPath e XSLT. Carregar a representação XML dos dados do objecto XPathDocument DataSet e forneça o objecto XPathDocument como o XML de origem quando executa uma transformação XSLT para obter o máximo desempenho. Para obter informações adicionais sobre este problema e para obter um exemplo de código demonstra como implementar a solução descrita, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
318580PROBLEMA: Transformações XSL com XmlDataDocument podem efectuar mais lentamente do que XPathDocument

Diminuir o desempenho quando transformar um DataSet com objectos de DataRelation não aninhado

Desempenho lento é esteja relacionado com um problema comum quando tenta transformar a representação XML de um DataSet que tem vários objectos de DataTable e cujos objectos DataRelation não tem sido aninhados para reflectir uma estrutura hierárquica para representar as relações no XML serializado.

Quando tenta transformar esses dados XML num formato hierárquico diferente (tal como HTML tabela que apresenta os dados de uma hierarquia de ascendente-subordinado), tem de utilizar XPath eixos de caminho de localização como colateral seguinte e colateral anterior que pode diminuir a transformação processam quando tiver suporte para grandes volumes de dados.

Nestas situações, a Microsoft recomenda que aninhar os objectos DataRelation do DataSet (que está, definido a propriedade Nested DataRelation para true ) e escrever código na folha de estilos XSLT utiliza natural descendente hierárquicas expressões de consulta XPath para localizar e transformar os dados.Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
325693PROBLEMA: Desempenho lento quando transformar um DataSet ADO.NET com DataRelations não aninhado

100 Por cento da CPU utilização ou bloqueio quando é utilizar XmlDocument para executar o XSLT transformações que utilizar precedente-colateral

Utilizando um objecto XmlDocument para fornecer a origem XML para uma transformação XSLT que utiliza os eixos de localização de XPath colateral anterior faz com que a utilização de 100 por cento da CPU, que faz com que o computador deixar de responder (não reagir) e também faz com que uma grande queda no desempenho do sistema.

Este comportamento é evidente quando transformar média a grandes documentos XML ou sequências. Este é actualmente um problema conhecido na versão RTM do .NET Framework. Microsoft está a funcionar para impedir a utilização de CPU de 100 por cento na próxima versão principal do .NET Framework. Melhorar XmlDocument para corresponder o desempenho do XPathDocument quando executar consultas XPath e XSLT transformações não é um objectivo de estrutura para futuras versões do .NET Framework.

A classe XPathDocument é a interface recomendada no .NET para carregar o XML quando uma aplicação tem de executar consultas XPath ou transformações XSLT nos dados XML. Se detectar este problema, modifique o código para utilizar um objecto XPathDocument para fornecer a origem XML para o processo de transformação XSLT.

XSL: Key desempenho quando utilizar lenta

O elemento XSLT XSL: Key é frequentemente utilizado para agrupar dados XML ou identificar exclusivas ocorrências do elemento especificado ou valores de atributo na origem de XML. Folhas de estilos XSLT que utilizam o elemento ' XSL: Key apresentar um desempenho lento quando são utilizadas para transformar dados XML nas aplicações do .NET. Isto é causado por um problema conhecido no XSLT implementação processador o elemento ' XSL: Key ' na versão RTM do .NET Framework.

Está actualmente disponível uma correcção para resolver este problema. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
324478Diminuir o desempenho de XSLT com analisador de gestão

Assemblagens geridas geradas para blocos de script de linha não tem libertadas correctamente

O .NET Framework, assemblagens geridas são geradas e carregadas implicitamente para executar o código contido no inline <msxsl:script> blocos. Um problema conhecido na versão RTM do .NET Framework impede que estes assemblagens a descarregar correctamente depois de concluído o processo de transformação. Esta anomalia pode causar um aumento incremental a utilização da memória, resultando numa queda no desempenho do sistema, se a folha de estilos afectados repetidamente é carregada para executar o XSLT transformações. A memória unreleased é disponibilizada apenas quando o processo de anfitrião é reciclado. Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
316775PROBLEMA: Não é possível descarregar assemblagens que criar e carregar utilizando o script no XSLT
Para contornar esta anomalia no ASP.NET aplicações, carregamento folhas de estilo afectado apenas uma vez durante a vida da aplicação, as folhas de estilo na cache do ASP.NET em cache e reutilizar as versões em cache para posteriores transformações. No Windows Forms e projectos de aplicações da consola, pode utilizar instâncias de objeto XslTransform globais para carregar as folhas de estilo afectado no arranque da aplicação e executar transformações posteriores. Estes métodos de solução não são aplicáveis quando a transformação XSLT deve ser executada num ambiente sem estado (por exemplo, camada para Serviços componentes).

A Microsoft recomenda que utilize objectos de extensão XSLT para implementar funções de extensão de XPath personalizadas e evitar os efeitos do lado desta anomalia.

Referências

Para obter informações adicionais, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
313997INFO: Guia para transformações de XSLT em execução em aplicações .NET

Propriedades

Artigo: 325689 - Última revisão: 23 de janeiro de 2004 - Revisão: 3.3
A informação contida neste artigo aplica-se a:
  • Bibliotecas de classe do Microsoft .NET Framework 1.0
  • Bibliotecas de classe do Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbinfo kbxml KB325689 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 325689
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com