Partilhar via


Programação funcional vs. procedimental (LINQ to XML)

Existem vários tipos de aplicações XML:

  • Alguns aplicativos usam documentos XML de origem e produzem novos documentos XML que estão em uma forma diferente dos documentos de origem.
  • Alguns aplicativos usam documentos XML de origem e produzem documentos de resultado em um formato totalmente diferente, como arquivos de texto HTML ou CSV.
  • Alguns aplicativos usam documentos XML de origem e inserem registros em um banco de dados.
  • Alguns aplicativos pegam dados de outra fonte, como um banco de dados, e criam documentos XML a partir dele.

Estes não são todos os tipos de aplicativos XML, mas estes são um conjunto representativo dos tipos de funcionalidade que um programador XML tem que implementar.

Com todos esses tipos de aplicativos, há duas abordagens contrastantes que um desenvolvedor pode adotar:

  • Construção funcional utilizando uma abordagem declarativa.
  • Modificação da árvore XML na memória usando código de procedimento.

LINQ to XML suporta ambas as abordagens.

Ao usar a abordagem funcional, você escreve transformações que pegam os documentos de origem e geram documentos de resultados completamente novos com a forma desejada.

Ao modificar uma árvore XML no local, você escreve código que atravessa e navega pelos nós em uma árvore XML na memória, inserindo, excluindo e modificando nós conforme necessário.

Você pode usar LINQ to XML com qualquer uma das abordagens. Você usa as mesmas classes e, em alguns casos, os mesmos métodos. No entanto, a estrutura e os objetivos das duas abordagens são diferentes. Por exemplo, em diferentes situações, uma ou outra abordagem geralmente terá melhor desempenho e usará mais ou menos memória. Além disso, uma ou outra abordagem será mais fácil de escrever e produzirá um código mais fácil de manter.

Para ver as duas abordagens contrastadas, consulte Modificação da árvore XML na memória vs. construção funcional.

Para obter um tutorial sobre como escrever transformações funcionais, consulte Introdução às transformações funcionais puras.