Vergleich von funktionaler und Prozedurale Programmierung (LINQ to XML) (C#)Functional vs. Procedural Programming (LINQ to XML) (C#)

Es gibt viele verschiedene Arten von XML-Anwendungen:There are various types of XML applications:

  • Einige Anwendungen produzieren auf der Basis von XML-Quelldokumenten neue XML-Dokumente, die eine andere Form als die Quelldokumente besitzen.Some applications take source XML documents, and produce new XML documents that are in a different shape than the source documents.

  • Andere Anwendungen produzieren auf der Basis von XML-Quelldokumenten Ergebnisdokumente mit einem völlig anderen Format, z. B. HTML- oder CSV-Textdateien.Some applications take source XML documents, and produce result documents in an entirely different form, such as HTML or CSV text files.

  • Wieder andere Anwendungen nehmen XML-Quelldokumente und fügen Datensätze in eine Datenbank ein.Some applications take source XML documents, and insert records into a database.

  • Es gibt aber auch Anwendungen, die Daten aus einer anderen Quelle, z. B. einer Datenbank, verwenden und aus ihnen XML-Dokumente erstellen.Some applications take data from another source, such as a database, and create XML documents from it.

Dies sind immer noch nicht alle Arten von XML-Anwendungen, die es gibt, sie stehen aber stellvertretend für die verschiedenartige Funktionalität, die XML-Programmierer implementieren müssen.These are not all of the types of XML applications, but these are a representative set of the types of functionality that an XML programmer has to implement.

Bei allen diesen Arten von Anwendungen kann ein Entwickler sich grundsätzlich zwischen den folgenden beiden gegensätzlichen Ansätzen entscheiden:With all of these types of applications, there are two contrasting approaches that a developer can take:

  • funktionale Konstruktion unter Verwendung eines deklarativen AnsatzesFunctional construction using a declarative approach.

  • XML-Strukturänderung im Arbeitsspeicher unter Verwendung prozeduralen CodesIn-memory XML tree modification using procedural code.

LINQ to XML unterstützt beide Ansätze.LINQ to XML supports both approaches.

Beim funktionalen Ansatz schreiben Sie Transformationen, die aus Quelldokumenten vollständig neue Ergebnisdokumente in der gewünschten Form generieren.When using the functional approach, you write transformations that take the source documents and generate completely new result documents with the desired shape.

Beim Ändern einer XML-Struktur an Ort und Stelle schreiben Sie Code, der die Knoten in einer XML-Struktur im Arbeitsspeicher durchläuft und durch sie navigiert und dabei Knoten nach Bedarf einfügt, löscht und bearbeitet.When modifying an XML tree in place, you write code that traverses and navigates through nodes in an in-memory XML tree, inserting, deleting, and modifying nodes as necessary.

Sie können LINQ to XML für beide Ansätze verwenden.You can use LINQ to XML with either approach. Bei beiden Ansätzen werden die gleichen Klassen und mitunter auch die gleichen Methoden verwendet.You use the same classes, and in some cases the same methods. Der Aufbau und die Ziele der beiden Ansätze unterscheiden sich jedoch deutlich.However, the structure and goals of the two approaches are very different. Welcher Ansatz im konkreten Fall leistungsfähiger und weniger speicherintensiv ist, hängt von der jeweiligen Situation ab.For example, in different situations, one or the other approach will often have better performance, and use more or less memory. Außerdem ist es auch von Fall zu Fall unterschiedlich, ob der Code gerade einfacher zu schreiben und besser zu unterhalten ist.In addition, one or the other approach will be easier to write and yield more maintainable code.

Eine Gegenüberstellung der beiden Ansätze finden Sie unter In-Memory XML Tree Modification vs. Functional Construction (LINQ to XML) (C#) (Änderung der XML-Struktur im Arbeitsspeicher und funktionale Konstruktion im Vergleich (LINQ to XML) (C#)).To see the two approaches contrasted, see In-Memory XML Tree Modification vs. Functional Construction (LINQ to XML) (C#).

Ein Tutorial zum Schreiben funktionaler Transformationen finden Sie unter Pure Functional Transformations of XML (C#) (Reine funktionale XML-Transformationen (C#)).For a tutorial on writing functional transformations, see Pure Functional Transformations of XML (C#).

Siehe auchSee Also

LINQ to XML Programming Overview (C#) (Übersicht der LINQ to XML-Programmierung (C#))LINQ to XML Programming Overview (C#)