XML nasuprot vezivanju podataka

Original: http://xfront.com/xml-versus-data-binding/index.html

Roger L. Costello

Usporedba XML-a s objektno orijentiranim i proceduralnim jezicima

The XML jezika (XSLTXML shemeXQuery, itd) su deklarativno, tj deskriptivnih nije propisana. Suprotno tome, java,  c++, pythonphp, itd. Su objektno orijentirani i proceduralni, tj. Preskriptivni, a ne opisni).

Stvoreni su mnogi alati za mapiranje (povezivanje) podataka i tipova podataka u xml-u sa strukturama podataka i tipovima podataka u objektno orijentiranim i proceduralnim jezicima i obrnuto. To se naziva vezivanje podataka.

Koristiti jedan model podataka ili obradu ili dva?

Jedan model: Neki ljudi zagovaraju obavljanje svih obrada pomoću xml jezika. Na primjer, prenesite podatke kao xml, zatim ih provjerite u xml shemi i zatim ih obradite pomoću xslt i xquery.

Dva (ili više) modela: Neki ljudi zagovaraju upotrebu kombinacije xml i objektno orijentisanih i/ili proceduralnih jezika. Na primjer, prenesite podatke kao xml, zatim upotrijebite vezivanje podataka da biste ih preslikali u strukture podataka, a zatim obavite svu obradu koristeći jedan ili više objektno orijentiranih i/ili proceduralnih jezika.

Prednosti jednog modela podataka/obrade (XML)

Mapiranje iz xml-a u strukture podataka u objektno orijentiranim i proceduralnim jezicima nije uređeno standardima. Na primjer, specifikacija xml sheme ne govori vam kako se njezini tipovi podataka preslikavaju na javu ili  c++. Zbog toga su neki alati za vezivanje podataka nepotpuni i ne mapiraju se čisto.

Mapiranje iz xml u objektno orijentirano/proceduralno ili obrnuto obično uključuje puno api poziva i puno programiranja. Stoga, umjesto da trošite svoje vrijeme na pisanje koda za rješavanje problema koji biste trebali riješiti, vi trošite značajan dio svog programskog napora pretvarajući se iz jednog sistema u drugi. To nije efikasno.

Kada se xml promijeni (npr. Promijeni xml shema), tada se moraju promijeniti strukture podataka u vašem objektno orijentiranom i proceduralnom kodu. To može biti vrlo teško i dugotrajno.

Imati dva različita modela istih podataka, razumjeti njihov odnos i organizirati se da ih sinkronizirate dodaje složenost iznad i iznad složenosti rješavanja problema koji biste trebali riješiti.

Dimitre Novatchev je napisao:

Moja lična zapažanja sasvim podržavaju… izjave o tome koliko je dodatnih resursa potrebno ako se podaci trebaju pretvoriti iz xml u predmete objekata. 70% – 80% cjelokupnog građevinskog posla može ići u ovu aktivnost. Nakon što sam nedavno završio takav posao, imao sam osjećaj da bih odlučio da upotrijebim samo jednu, xml predstavu, postigao bih rezultate za 3 do 4 puta manje vremena.

Format koji se koristi za razmjenu podataka (xml) je primaran u smislu da ga treba dogovoriti s drugim stranama, pa ima smisla koristiti ga i kao primarni format za obradu.

Pridržavanje xml jezika pruža prednosti jednostavnosti upotrebe. Na primjer, prije nekoliko godina napravio sam eksperiment: napisao sam neki xslt za rješavanje problema, a zatim sam isti problem riješio pomoću jave. Trebalo mi je 10 linija xslt-a i preko 100 linija Java-e. Iz jednog eksperimenta se ne može puno vidjeti, ali sva moja iskustva od tog vremena pojačavaju ovaj eksperiment.

Napomena: pridržavanje  xml  porodice tehnologija ne znači da se više ne koriste objektno orijentisani i proceduralni jezici. Umjesto toga, oni su gurnuti na niži nivo. Na primjer, xml validator sheme može se implementirati u java ili C++. Jedan XSLT procesor može biti implementiran u Java ili C++. Dakle, vi – programer – radite na xml razini, a ispod xml obrade nalaze se alati napisani na objektno orijentiranim i proceduralnim jezicima koji provode obradu.

XML technologies layered on top of object oriented and procedural tools

Fantastičan primjer potpunog rada u okviru xml porodice tehnologija vidimo sa Orbeon Forms. Naizgled integrira xformexml sheme i trajnu pohranu koristeći eXist xml bazu podataka. Ispod haube je gomila javascripta i ajaxa, s kojima programer nikada ne mora imati posla.

Prednosti upotrebe dva (ili više) modela podataka/obrade

Možda će neke koristi od performansi biti izvršavanje obrade u objektno orijentiranom ili proceduralnom jeziku, a ne u XML-u.

Nekim programerima je ugodnije raditi sa strukturama podataka nego raditi na funkcionalnim jezicima kao što je xslt.

Zahvalnice

Zahvaljujem sljedećim ljudima na njihovom doprinosu ovom dokumentu:

  • Roger Costello
  • Dave Czulada
  • Mukul Gandhi
  • Rick Jelliffe
  • Michael Kay
  • Robert Koberg
  • Boris Kolpackov
  • Jack Lindsey
  • Dimitre Novatchev
  • Bryan Rasmussen
  • Dennis Sosnoski

Posljednje ažuriranje: 1. aprila 2021