Поделиться через


Функциональное и процедурное программирование (LINQ to XML)

Существуют различные типы XML-приложений:

  • Некоторые приложения принимают исходные XML-документы и создают новые XML-документы, которые находятся в другой форме, чем исходные документы.
  • Некоторые приложения принимают исходные XML-документы и создают результаты документов в совершенно другой форме, например HTML или CSV-файлы.
  • Некоторые приложения принимают исходные XML-документы и вставляют записи в базу данных.
  • Некоторые приложения принимают данные из другого источника, например базы данных, и создают XML-документы из него.

Это не все типы XML-приложений, но это репрезентативный набор типов функций, которые должен реализовать программист XML.

При использовании всех этих типов приложений существует два контрастных подхода, которые разработчик может принять:

  • Функциональное построение с помощью декларативного подхода.
  • Изменение дерева XML в памяти с помощью процедурного кода.

LINQ to XML поддерживает оба подхода.

При использовании функционального подхода вы записываете преобразования, которые принимают исходные документы и создают совершенно новые документы результатов с требуемой фигурой.

При изменении дерева XML на месте, необходимо написать код, который перебирает и обходит узлы в находящемся в памяти дереве XML, вставляя, удаляя и изменяя узлы по мере необходимости.

С помощью LINQ to XML можно использовать любой подход. Вы используете одни и те же классы, а в некоторых случаях и те же методы. Однако структура и цели двух подходов отличаются. Например, в разных ситуациях один или другой подход часто будет иметь лучшую производительность и использовать больше или меньше памяти. Кроме того, один из подходов будет проще писать и приведет к более поддерживаемому коду.

Чтобы увидеть контрастность двух подходов, см . изменение дерева XML в памяти и функциональное построение.

Руководство по написанию функциональных преобразований см. в статье "Общие сведения о чистых функциональных преобразованиях".