Udostępnij za pośrednictwem


Programowanie funkcjonalne a proceduralne (LINQ to XML)

Istnieją różne typy aplikacji XML:

  • Niektóre aplikacje przyjmują źródłowe dokumenty XML i tworzą nowe dokumenty XML, które znajdują się w innym kształcie niż dokumenty źródłowe.
  • Niektóre aplikacje przyjmują źródłowe dokumenty XML i generują dokumenty wynikowe w zupełnie innej formie, takiej jak pliki tekstowe HTML lub CSV.
  • Niektóre aplikacje przyjmują źródłowe dokumenty XML i wstawiają rekordy do bazy danych.
  • Niektóre aplikacje przyjmują dane z innego źródła, takiego jak baza danych, i tworzą na ich podstawie dokumenty XML.

Nie są to wszystkie typy aplikacji XML, ale są to reprezentatywny zestaw typów funkcji, które musi zaimplementować programista XML.

W przypadku wszystkich tych typów aplikacji istnieją dwa kontrastujące podejścia, które deweloper może wykonać:

  • Konstrukcja funkcjonalna przy użyciu podejścia deklaratywnego.
  • Modyfikowanie drzewa XML w pamięci przy użyciu kodu proceduralnego.

LINQ to XML obsługuje obie metody.

W przypadku korzystania z podejścia funkcjonalnego można pisać przekształcenia, które przyjmują dokumenty źródłowe i generują całkowicie nowe dokumenty wynikowe z żądanym kształtem.

Podczas modyfikowania drzewa XML pisze się kod, który przechodzi i przechodzi przez węzły w drzewie XML w pamięci, wstawia, usuwa i modyfikuje węzły w razie potrzeby.

Można użyć LINQ to XML z jedną z metod. Używasz tych samych klas, a w niektórych przypadkach te same metody. Jednak struktura i cele tych dwóch podejść są różne. Na przykład w różnych sytuacjach jedno lub drugie podejście często będzie miało lepszą wydajność i używa więcej lub mniej pamięci. Ponadto jedno lub drugie podejście będzie łatwiejsze do pisania i zwracania bardziej konserwowalnego kodu.

Aby zobaczyć dwa kontrastowe podejścia, zobacz Modyfikacja drzewa XML w pamięci a konstrukcja funkcjonalna.

Aby zapoznać się z samouczkiem dotyczącym pisania przekształceń funkcjonalnych, zobacz Wprowadzenie do czystych przekształceń funkcjonalnych.