INFO: Leistung von XSLT-Transformationen in .NET Framework

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 325689 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel enthält Informationen über die Ursachen und Lösungen oder Problemumgehungen für bekannte Leistungsprobleme, die auftreten können bei Verwendung den .NET Framework XSLT-Prozessor zum Ausführen von XSLT Transformationen.

XSLT-Transformationen mit XmlDataDocument ausführen langsam

Anwenden einer XSLT-Transformation auf die XML-Darstellung der Daten in ein ADO.NET DataSet ist eine gängige Anwendung-Anforderung. Microsoft .NET Framework base Klassen im System.XML -Namespace in Verbindung mit ADO.NET DataSet zum Implementieren dieser Anforderung in .NET-Anwendungen verwendet werden.

System.Xml.Xsl.XslTransform ist die .NET Framework-Basisklasse, mit dem Ausführen von XSLT-Transformationen. System.Xml.XmlDataDocument , System.Xml.XPath.XPathDocument und System.Xml.XmlDocument finden Sie die drei Basis .NET Framework-Klassen, die zum Laden und die XML-Darstellung des Daten in ein ADO.NET DataSet als Quell-XML angeben, wenn eine XSLT-Transformation ausgeführt wird, verwendet werden können. Dieser drei Optionen ist mit einem XmlDataDocument -Objekt mindestens Code erforderlich, da er beim Instantiieren direkt mit einem DataSet -Objekt synchronisiert werden kann. Geringe Leistung ist jedoch ein häufiges Problem, wenn Sie ein XmlDataDocument -Objekt, verwenden um eine XSLT-Transformation auf die XML-Darstellung der ein ADO.NET DataSet anwenden. Handelt sich hierbei Verhalten von Entwurf in der RTM-Version des .NET Framework.

System.Xml.XPath.XPathDocument ist die am besten optimierte Klasse für XPath und XSLT-Verarbeitung. Laden der XML-Darstellung der DataSet Daten in einem XPathDocument -Objekt, und das XPathDocument -Objekt als Quell-XML-Daten eingeben, beim Ausführen einer XSLT-Transformation um maximale Leistung zu erzielen. Weitere Informationen zu diesem Problem und ein Codebeispiel, das auf die beschriebene Problemumgehung zu implementieren veranschaulicht folgendem Artikel der Microsoft Knowledge Base:
318580PRB: XSL-Transformationen mit XmlDataDocument können langsamer als XPathDocument ausführen.

Niedrige Leistung beim Transformieren ein DataSet mit nicht geschachtelten DataRelation-Objekte von

Geringe Leistung ist ein häufiges Problem beim Versuch, die XML-Darstellung eines DataSet transformieren, das hat mehrere DataTable -Objekte und wurden entsprechend eine hierarchische Struktur um die Beziehungen in der serialisierten XML darzustellen, deren DataRelation -Objekte nicht geschachtelt wurde.

Wenn Sie versuchen, solche XML-Daten in ein anderes hierarchischen Format umwandeln (z. B. ein HTML-Tabelle, zeigt die Daten in einer Parent-Child-Hierarchie), müssen Sie XPath Speicherort Pfad Achsen Following-Sibling sowie preceding-Sibling , die die Transformation herabsetzen können Wenn mittlere auf große Datenmengen verarbeiten.

In solchen Fällen empfiehlt Microsoft, dass Sie die DataRelation -Objekte für den DataSet (, der die Nested -Eigenschaft der DataRelation auf true festgelegt ist,) schachteln und Schreiben Code in das XSLT-Stylesheet, das natürliche oben hierarchische XPath-Abfrageausdrücke zum Suchen und Transformieren der Daten verwendet.Weitere Informationen finden Sie die folgende KB-Artikelnummer:
325693PRB: Langsam beim Transformieren von ein ADO.NET-DataSet mit nicht geschachtelte DataRelations

100 Prozent CPU-Auslastung oder Verbindung Wenn Sie verwenden XmlDocument zu ausführen XSLT-Transformationen preceding-Sibling, verwenden

Ein XmlDocument -Objekt die Quelle bereitstellen XML in eine XSLT-Transformation, die die preceding-Sibling XPath Speicherort Achsen verwendet 100 Prozent CPU-Auslastung verursacht, die bewirkt, dass den Computer reagiert nicht mehr (hängt) und führt auch ein steep Ablegen in die Systemleistung.

Dieses Verhalten ist erkennbar, wenn Sie auf mittlere bis große XML-Dokumente oder Streams transformieren. Dieses ist derzeit ein bekanntes Problem in der RTM-Version von .NET Framework. Microsoft arbeitet um die 100 Prozent CPU-Auslastung in der nächsten größeren Version von .NET Framework zu verhindern. Verbessern der XmlDocument entsprechend die Leistung der XPathDocument , wenn Sie XPath-Abfragen ausführen und XSLT-Transformationen kein Entwurfsziel für zukünftige Versionen von .NET Framework.

XPathDocument -Klasse ist die empfohlene Schnittstelle in .NET XML geladen werden, wenn eine Anwendung XPath-Abfragen oder XSLT-Transformationen für die XML-Daten ausführen muss. Wenn dieses Problem auftritt, ändern Sie Ihren Code ein XPathDocument -Objekt einzusetzen, das die Quelle XML des XSLT-Transformationsvorgangs liefert.

Langsame Leistung bei Sie Verwendung xsl: Key

Das xsl: Key -XSLT-Element wird häufig verwendet, um XML-Daten gruppieren oder Identifizieren der eindeutige Vorkommen des angegebenen Elements oder Attributwerte in der Quell-XML. XSLT-Stylesheets, die das xsl: Key -Element aufweisen langsam, wenn Sie zum Transformieren von XML-Daten in .NET-Anwendungen verwendet werden. Dies wird durch ein bekanntes Problem in der XSLT verursacht Prozessorimplementierung von das xsl: Key -Element in der RTM-Version von .NET Framework.

Ein Update zur Behebung dieses Problems ist derzeit verfügbar. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
324478Geringe Leistung mit verwalteten Parser XSLT

Verwaltete Assemblys für Inline Skriptblöcken generiert sind nicht korrekt veröffentlicht.

In .NET Framework verwaltete Assemblys generiert und zum Ausführen der enthaltene Code in Inline <msxsl:script> implizit geladen blockiert. Ein bekanntes Problem in der RTM-Version von .NET Framework verhindert, dass diese Assemblys vom Abschluss der Transformation korrekt entladen wird. Diese Anomalie kann inkrementelle Erhöhung in Memory Usage, was einer Dropdownliste in die Systemleistung Wenn betroffenen Stylesheet wiederholt auszuführende XSLT-Transformationen geladen wird. Nicht freigegebene Speicher wird freigegeben, nur wenn Host Prozess wieder verwendet wird. Weitere Informationen finden Sie die folgende KB-Artikelnummer:
316775PRB: Kann nicht Assemblys entfernen, die Sie erstellen und laden mithilfe von Skripts in XSLT
Zur Umgehung diese Anomalie in ASP.NET Anwendungen, laden die betroffenen nur einmal während der Lebensdauer der Anwendung Stylesheets, die Stylesheets im ASP.NET-Cache zwischengespeichert und Wiederverwenden von zwischengespeicherten Versionen für spätere Transformationen. In Windows Forms und Konsolenanwendung Projekte können Sie globale XslTransform Objektinstanzen betroffenen Stylesheets beim Start der Anwendung geladen und höhere Transformationen ausgeführt. Diese Problemumgehung Methoden sind nicht anwendbar, wenn die XSLT-Transformation in einer statusfreien Umgebung ausgeführt werden muss (z. B. Middle-Tier Enterprise Services-Komponenten).

Microsoft empfiehlt, dass Sie XSLT-Erweiterungsobjekte implementieren benutzerdefinierte XPath-Erweiterungsfunktionen und vermeiden, die Nebeneffekte Diese Anomalie verwenden.

Informationsquellen

Weitere Informationen finden Sie die folgende KB-Artikelnummer:
313997INFO: Wegweiser für die Ausführung von XSLT-Transformationen in .NET-Anwendungen

Eigenschaften

Artikel-ID: 325689 - Geändert am: Freitag, 23. Januar 2004 - Version: 3.3
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework-Klassenbibliotheken 1.0
  • Microsoft .NET Framework-Klassenbibliotheken 1.1
Keywords: 
kbmt kbinfo kbxml KB325689 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 325689
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

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