Bagikan melalui


Pemrograman fungsional vs prosedural (LINQ ke XML)

Ada berbagai jenis aplikasi XML:

  • Beberapa aplikasi mengambil dokumen XML sumber, dan menghasilkan dokumen XML baru yang dalam bentuk yang berbeda dari dokumen sumber.
  • Beberapa aplikasi mengambil dokumen XML sumber, dan menghasilkan dokumen hasil dalam bentuk yang sama sekali berbeda, seperti file teks HTML atau CSV.
  • Beberapa aplikasi mengambil dokumen XML sumber, dan memasukkan catatan ke dalam database.
  • Beberapa aplikasi mengambil data dari sumber lain, seperti database, dan membuat dokumen XML darinya.

Ini tidak semua jenis aplikasi XML, tetapi ini adalah satu set representatif dari jenis fungsi yang harus diimplementasikan oleh pemrogram XML.

Dengan semua jenis aplikasi ini, ada dua pendekatan berbeda yang dapat diambil pengembang:

  • Konstruksi fungsional menggunakan pendekatan deklaratif.
  • Modifikasi pohon XML dalam memori menggunakan kode prosedural.

LINQ ke XML mendukung kedua pendekatan.

Saat menggunakan pendekatan fungsional, Anda menulis transformasi yang mengambil dokumen sumber dan menghasilkan dokumen hasil yang sama sekali baru dengan bentuk yang diinginkan.

Saat memodifikasi pohon XML di tempat, Anda menulis kode yang melintasi dan menavigasi melalui node dalam pohon XML dalam memori, memasukkan, menghapus, dan memodifikasi node seperlunya.

Anda dapat menggunakan LINQ ke XML dengan salah satu pendekatan. Anda menggunakan kelas yang sama, dan dalam beberapa kasus metode yang sama. Namun, struktur dan tujuan dari kedua pendekatan berbeda. Misalnya, dalam situasi yang berbeda, satu atau pendekatan lain akan sering memiliki kinerja yang lebih baik, dan menggunakan lebih banyak atau lebih sedikit memori. Selain itu, satu atau pendekatan lainnya akan lebih mudah untuk menulis dan menghasilkan kode yang lebih dapat dipelihara.

Untuk melihat kedua pendekatan yang kontras, lihat Modifikasi pohon XML dalam memori vs. konstruksi fungsional.

Untuk tutorial tentang menulis transformasi fungsional, lihat Pengantar transformasi fungsional murni.