Hov. Du er ikke logget ind.
DU SKAL VÆRE LOGGET IND, FOR AT INTERAGERE PÅ DENNE SIDE
Hvor mange stjerner giver du?

Befri din webshop

1.257 Visninger
Hvor mange stjerner giver du? :
08 July 2009

(Advarsel: Man skal nok være lettere teknisk interesseret for at få noget ud af dette indlæg, eller for bare at gide læse det.)

For mig som udvikler er en af de mest irriterende mangler ved standard webshop så DanDomain, Scannet og os selv EasyFlow, at man ikke kan få lov at kode videre på dem.

Så selvom man har evner er det ikke muligt lige at kode den feature eller det layout, der skal til for at gøre ens shop eller site bliver helt perfekt.

Men det skal være slut, for et par dage siden fik jeg opgaven at lave et data feed til en af vores konsulent kunder, og i den forbindelse besluttede jeg at det er på tide at EasyFlow får et template sprog.

Det første valg jeg skulle træffe, var om jeg skulle bygge mit eget sprog eller finde et eksisterende som jeg kunne udvide. Jeg tænkte tilbage på kompiler konstruktion på universitet, og indså hurtigt at det ville være alt for omfattende at skrive sit eget sprog. Så jeg var altså tvunget til, at finde et eksisterende sprog som jeg kunne ændre så det passede ind i EasyFlow system.

EasyFlow er bygget på Microsofts .Net teknologi, så det var oplagt at kigge på hvordan andre systemer der er baseret på .Net havde implementeret deres template sprog. To af de Content Management systemer der har mest succes i .Net verden er SiteCore og Umbraco.

Begge bruger XSLT som template sprog, og en af grundene til det er at .Net platformen indeholder en XSLT motor, som gør meget af arbejdet for en. Det er også nemt, at udvide med egenudviklede .Net funktioner.

Dette gør XSLT til oplagt kandidat, men enhver der har prøvet arbejde med XSLT ved også at det ikke er en smertefrit. Til bestemte opgaver er XSLT unødigt kluntet og besværligt.

Dette er ikke fordi at skaberne af sproget ikke har tænkt sig om, snarer tværtimod. Sagen er den at XSLT er bygget til at kunne transformere meget store dokumenter (flere 100 mb). For at kunne gøre dette hurtigt, er det væsentligt at de forskellige linier/blokke af XSLT kan behandles parallelt. Så arbejdet kan fordeles ud over flere kerner og processorer.

Jeg arbejdede engang på et projekt i forbindelse med kommune sammenlægning, hvor vi skulle konvertere sags journaler. Havde XSLT ikke været så let at paralleliserer, så havde det været ubrugeligt for os.

Men når man bruger template sprog til at vise websider, så er evnen til parallel behandling typisk i ligegyldig. I stedet vil man havde et sprog der er så let og simpelt som muligt, man har ikke tid kluntet og besværlig syntaks.

Så jeg måtte ud at lede et andet sprog, der var lettere og mere intuitivt at bruge.

En af de væsentligst nyere platforme indenfor webudvikling, er Ruby-on-Rails. Det er et genialt framework, der ved at gøre simplere og hurtigere at skrive webapplikationer.

I lyset af Ruby-on-Rails' succes er der lavet adskillige Rails inspirede frameworks, til de forskellige platforme. Java har Groovy on Grails, Python har Django osv. og på .Net platformen har vi Castle og ASP.Net MVC.

Specielt Castle projektet er interessant i forbindelse med template sprog, for det bruger et sprog der hedder VTL. Sproget er skrevet til at være let og simpelt at bruge og lærer. Hvilket betyder at sproget et meget lille ordforråd og kan læres på omkring en 30 minutter, hvis man er vant til at programmerer.

Sproget er faktisk så simpelt, at jeg ville tro at det også er nemt at lærer selvom man ikke kan programmerer. Det eneste man skal gøre er at læse guiden til sproget, også skulle man være kørende.

Måden man udvider sproget, så det kan snakke med EasyFlow løsningen er ganske simple. For VTL gør det muligt at eksponerer almindelige .Net objekter, som efterfølgende kan manipulerer via VTL.

Indtil videre er jeg meget tilfreds med VTL, det har vidst sig både hurtigt at arbejde med og at udvide.

I næste indlæg vil jeg vise koden til data feedet og samt hvad man mere kan bruge VTL i EasyFlow.

Hvor mange stjerner giver du? :
Få besked når Lundsby skriver Skriv dig op