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 (XSLT, XML sheme, XQuery, itd) su deklarativno, tj deskriptivnih nije propisana. Suprotno tome, java, c++, python, php, 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.
Fantastičan primjer potpunog rada u okviru xml porodice tehnologija vidimo sa Orbeon Forms. Naizgled integrira xforme, xml 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