Vergleich von LINQ to XML mit anderen XML-Technologien

Aktualisiert: November 2007

In diesem Thema wird LINQ to XML mit den folgenden XML-Technologien verglichen: XmlReader, XSLT, MSXML und XmlLite. Diese Informationen helfen Ihnen bei Ihrer Entscheidung für eine dieser Technologien.

Einen Vergleich von LINQ to XML mit dem Dokumentobjektmodell (DOM) finden Sie unter Unterschiede zwischen LINQ to XML und DOM.

Vergleich von LINQ to XML mit XmlReader

XmlReader ist ein schneller Parser, der ausschließlich in Vorwärtsrichtung und ohne Zwischenspeicherung arbeitet.

LINQ to XML wird über XmlReader implementiert. Beide sind eng ineinander integriert. Sie können jedoch auch XmlReader selbst verwenden.

Stellen Sie sich z. B. vor, Sie erstellen einen Webdienst, der pro Sekunde Hunderte XML-Dokumente analysiert. Wenn alle Dokumente dieselbe Struktur aufweisen, müssen Sie zum Analysieren der XML-Dokumente nur eine einzige Implementierung schreiben. In diesem Fall ist die Verwendung von XmlReader selbst sinnvoll.

Wenn Sie jedoch ein System erstellen, das viele kleinere XML-Dokumente analysiert, die alle unterschiedlich sind, empfiehlt es sich, auf die höhere Produktivität zu setzen, die LINQ to XML ermöglicht.

Vergleich von LINQ to XML mit XSLT

Sowohl LINQ to XML als auch XSLT bieten umfangreiche Funktionen zum Transformieren von XML-Dokumenten. XSLT ist ein regelbasierter, deklarativer Ansatz. Fortgeschrittene XSLT-Programmierer verfassen XSLT in einem funktionalen Programmierstil, der einen zustandslosen Ansatz verfolgt. Transformationen können mit reinen Funktionen geschrieben werden, die ohne Nebeneffekte implementiert sind. Dieser regelbasierte oder funktionale Ansatz ist für viele Entwickler ungewohnt, das Erlernen kann daher schwierig und zeitaufwendig sein.

XSLT kann ein sehr produktives System sein, das leistungsstarke Anwendungen erbringt. Einige große Webunternehmen verwenden XSLT beispielsweise als Möglichkeit, HTML aus XML zu generieren, das aus verschiedenen Datenspeichern stammt. Das verwaltete XSLT-Modul kompiliert XSLT in CLR-Code und erweist sich in einigen Szenarios sogar als leistungsfähiger als das systemeigene XSLT-Modul.

Fakt ist aber, dass Entwickler bei Verwendung von XSLT nicht auf das vorhandene C#- und Visual Basic-Wissen zurückgreifen können. Stattdessen müssen sie Code in einer anderen und komplexen Programmiersprache schreiben. Die Verwendung zweier nicht integrierter Entwicklungssysteme, wie C# (oder Visual Basic) und XSLT, führt zu Softwaresystemen, die schwieriger zu entwickeln und zu verwalten sind.

Wenn Sie LINQ to XML-Abfrageausdrücke beherrschen, bieten LINQ to XML-Transformationen eine leistungsstarke und einfach zu handhabende Technologie. Im Wesentlichen formen Sie Ihr XML-Dokument, indem Sie die funktionale Konstruktion verwenden, Daten aus verschiedenen Quellen herausziehen, dynamisch XElement-Objekte erstellen und das Ganze dann zu einer neuen XML-Struktur zusammensetzen. Die Transformation kann ein vollkommen neues Dokument zum Ergebnis haben. Das Konstruieren von Transformationen in LINQ to XML ist relativ einfach und intuitiv, und der resultierende Code ist lesbar. Dies trägt zu geringeren Entwicklungs- und Wartungskosten bei.

LINQ to XML ist nicht dazu gedacht, XSLT zu ersetzen. XSLT ist für komplizierte und dokumentorientierte XML-Transformationen immer noch das Mittel der Wahl. Dies gilt insbesondere dann, wenn die Struktur des Dokuments nicht gut definiert ist.

XSLT hat den Vorteil, dem W3C-Standard (World Wide Web Consortium) zu unterliegen. Wenn bei Ihnen die Anforderung besteht, ausschließlich Standardtechnologien zu verwenden, ist XSLT möglicherweise das Richtige für Sie.

XSLT ist XML und kann daher programmgesteuert bearbeitet werden.

Vergleich von LINQ to XML mit MSXML

MSXML ist die COM-basierte Technologie für die XML-Verarbeitung in Microsoft Windows. MSXML stellt eine systemeigene Implementierung des DOM mit Unterstützung für XPath und XSLT bereit. Darüber hinaus enthält MSXML den ereignisbasierten, ohne Zwischenspeicherung arbeitenden Parser SAX2.

MSXML zeigt eine gute Leistung und ist in den meisten Szenarios standardmäßig sicher. Auf MSXML kann in Internet Explorer zugegriffen werden, sodass eine clientseitige XML-Verarbeitung in AJAX-Anwendungen erfolgen kann. MSXML kann von jeder Programmiersprache aus verwendet werden, die COM unterstützt, wie z. B. C++, JavaScripts und Visual Basic 6.0.

Von der Verwendung von MSXML in verwaltetem Code, der auf der Common Language Runtime (CLR) basiert, wird abgeraten.

Vergleich von LINQ to XML mit XmlLite

XmlLite ist ein Pull-Parser, der ausschließlich in Vorwärtsrichtung und ohne Zwischenspeicherung arbeitet. Entwickler verwenden XmlLite hauptsächlich zusammen mit C++. Es wird nicht empfohlen, XmlLite mit verwaltetem Code zu verwenden.

Der Hauptvorteil von XmlLite besteht darin, dass er ein leichter, schneller XML-Parser ist, der in den meisten Szenarios sicher ist. Seine Angriffsfläche ist sehr klein. Wenn Sie nicht vertrauenswürdige Dokumente analysieren müssen und sich vor Risiken, wie DoS-Angriffen oder der Offenlegung von Daten, schützen möchten, könnte XmlLite ein geeignetes Mittel der Wahl sein.

XmlLite ist nicht in Sprachintegrierte Abfrage (Language-Integrated Query, LINQ) integriert. Die Produktivitätsverbesserungen für Programmierer, die zu den großen Vorteilen von LINQ gehören, können mit XmlLite nicht erzielt werden.

Siehe auch

Weitere Ressourcen

Erste Schritte (LINQ to XML)