XML kontra databindning

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

Jämföra XML med objektorienterad och Procedur språk
Xml språk (XSLT, XML Schema, XQuery, etc) är deklarativ, dvs beskrivande inte tvingande. Omvänt, Java, C ++, Python, PHP, etc är objektorienterat och processrätt, dvs. normativa inte beskrivande).

Många verktyg har skapats för att kart (binda) data och datatyper i xml till datastrukturer och datatyper i objektorienterad och procedurspråk och vice versa. Detta kallas databindning.

Använd One Data / Processing Model eller två?
En Modell: Vissa människor förespråkar gör all behandling med hjälp av xml språken. Till exempel, transportera data som xml, sedan validera den mot ett XML-schema och sedan bearbeta den med XSLT och XQuery.

Två (eller fler) Modeller: Vissa människor förespråkar att använda en kombination av xml och objektorienterad och / eller arbetsspråk. Till exempel, transportera data som xml, sedan använda databindning att kart det i datastrukturer, och sedan göra allt behandling med hjälp av en eller flera objektorienterade och / eller arbetsspråk.

Fördelar med One Data / Processing Model (XML)
Kartläggningen från xml till datastrukturer i objektorienterad och procedurspråk styrs inte av standarder. Till exempel, xml-schemat specifikationen inte berätta hur dess datatyper mappas till Java eller C ++. Följaktligen vissa data bindande verktygen är ofullständiga och inte kart snyggt.

Att göra en kartläggning från xml till objektorienterat / procedur eller tvärtom normalt innebär massor av API-anrop och massor av programmering. I stället för att spendera din tid att skriva kod för att lösa problemet du ska kunna lösa, spenderar du en stor del av din programmering ansträngning konvertering från ett system till ett annat. Det är inte effektivt.

När xml förändringar (t.ex. förändringar XML-schemat) sedan de datastrukturer i din objektorienterad och förfarandekoden måste förändras. Detta kan vara mycket svårt och tidskrävande.

Att ha två olika modeller av samma uppgifter, förstå hur de relaterar, och organisera dig själv att hålla dem i synk är att lägga komplexitet utöver komplexitet lösa problemet du ska kunna lösa.

Dimitre Novatchev skrev:

Mina personliga iakttagelser ganska stödja … uttalanden om hur mycket extra resurser behövs om data måste omvandlas från xml och dit ett föremål representation. 70% – 80% av hela byggarbetet kan gå in i denna aktivitet. Efter nyligen avslutat en sådan typ av arbete hade jag en känsla av att jag hade beslutat att bara använda en enda, xml representation, skulle jag ha uppnått resultat i 3 till 4 gånger mindre tid.

Formatet som används för datautbyte (xml) är primärt i den meningen att den behöver komma överens med andra parter, så det är klokt att också använda det som det primära formatet för bearbetning.

Att nöja sig med xml språken ger enkel för användning fördelar. Till exempel, för flera år sedan gjorde jag ett experiment: Jag skrev lite XSLT för att lösa ett problem och sedan lösa samma problem med hjälp av java. Det tog mig 10 rader av XSLT och över 100 rader med java. Inte mycket kan lyste från ett enda experiment, men alla mina erfarenheter sedan dess förstärker detta experiment.

Obs: stickning med xml familjen av teknik innebär inte att objektorienterade och procedurspråk används inte längre. Snarare är de skjuts till en lägre nivå. Till exempel kan ett XML-schema validator implementeras i Java eller C ++. En XSLT-processor kan implementeras i Java eller C ++. Så du – programmeraren – arbetet på xml nivå, och under xml bearbetning är verktyg, skriven på objektorienterade och procedurspråk, som utför behandlingen.

 

Ett fantastiskt exempel på att arbeta helt inom xml familjen av teknik ses med Orbeon formulär. Den integrerar seemlessly XForms, XML-scheman och beständig lagring använder eXist xml databas. Under huven sitter ett gäng javascript och ajax, som programmeraren har aldrig ta itu med.

Fördelar med att använda två (eller fler) Data / Processing Modeller
Det kan finnas vissa prestandafördelar för att göra behandlingen i ett objektorienterat eller procedurspråk snarare än i XML.

Vissa programmerare är mer bekväm att arbeta med datastrukturer än att arbeta i funktionella språk som XSLT.

Tack
Tack till följande personer för deras bidrag till detta dokument:

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