Wednesday, September 11, 2013

Kolmas päev - SpringOne2gx 2013

Kui eile oli põhiteemaks Big Data, Sprinb Batch, Grails uuendused ja tulevik, siis täna on lisaks ka kliendi poolsed teemad (Angular, Events) ning Rest, Rest ja Rest.

Vaatasin üle loengu Grailsi erinevad arhitektuurid ja tõesti hakkas silma väga tugev sisemsite bus-ide kasutamine olgu see siis Spring Events, Spring Integration või Camel vormis. Samas võib ka selleks vabalt olla rabbitmq lahendus.

Üks arhitektuurne lähenemine mis seal meeldis, oli see, et kasutaja tegevused tulevad sisse ja
need kirjutatakse kõik denormaliseerituna maha baasi nn. deltadena, et on täpselt näha iga kasutaja liigutus. Kasutaja saab teate et andmed on töötluses ja kohe tuleb tulemus.
Selle peale käivitatakse push event busile mis teavitab gorm-i uutest andmetest mis täidab ära nii põhibaasi kui ka vajalikud otsingubaasid ning siis lastakse grails events plugina abil kasutajale info tagasi. Tõeliselt asünkroonne lahendus.

vt. grails-events plugins, grails-push. Spring Events, Reactor.


Nüüd algab Angular.
Matias Googlest räägib AngularJS-ist.
http://yearofmoo.github.io/springone/#/
http://www.yearofmoo.com/

Slaidid ja selle tüübi kodukas angluari kohta, väga hea info allikas.

Angulari loengus soovitati kirjutada palju unit-teste ning lisaks soovitati kasutada webdriverit. Tuleks üle vaadata chrome webdriver.

Järgmisena oli teemaks Graeme Grails 2.3 Rest kasutus. Sarnanes eilse keynotega, aga oli täna põhjalik.
Uues grailsis on rest ressurssideks nii controllerid kui ka vajadusel domeeniobjektid otse. Domeeniobjektil on  vaja ta defineerida kui @Resource ja url mappingus paika ajada ja ongi automaatselt kõik rest toimingud toetatud.
Controllerite puhul tulekb need kas genereerida (uus scaffolding plugin genereerib rest controllereid) või kasutada RestController superklassi.

2.3 võimalusi vaadates võiks kokkuvõtlikult öelda et springwebservicest võib loobuda ja soapi lõplikult ära visata. Kui on vajadus xml-i väljastada või vastu võtta saab seda lihtsalt rest controlleris öelda et väljundiks oleks xml mida näiteks saaks vajadusel xsd-ga valideerida.

Versioneerimist restis toetati nii urli põhiselt kui ka Accept-Version:x põhiselt. Mõlemad toimivad.

Objektide renderdamiseks JSON/XML kujul kasutatakse spetsiaalseid renderdajaid, mida on võimalik ka ise luua. Siin näeks use-casena näiteks Xtee rendereri loomist kus väljundiks on xml mis sisaldab vajalikke xtee tage ka.

urlmappingus saab rest resurssse ka nestida ala /cities/1/persons/1/edit

Async - Promiselist (väga mugav mitme asünk operatsiooni tulemuste kokkuviimiseks).


Päeva viimased loengud teemadel Angular-Groovy ning Spring Android midagi uut eriti ei pakkunud näidati lihtsalt Rest teenuste kasutamist.

Õhtul keynotet polnud seega sai varakult asi kokku tõmmatud.

Õhtul vabaa hetke ära kasutades sai lisaks uuritud veel nn. desktop kliendi arendamist ja hetkel on jäänud kaks varianti silma.

1) HTML rakenduse loomine Windows 8 peale kasutades VIsual Studiot ja WinJS komponente. Selle abil saab täiesti reaalse Metro rakenduse luua mis saab suhelda failsüsteemiga jne. Mootorina kasutab siis ilmselt IE 10-et.

2) Luua tüüpiline SPA rakendus ning bundleda see koos Bracktes-shell nimelise rakendusega mis on Adobe poolt loodud konteiner nende HTML-is kirjuatud HTML/CSS/Javascript editori jooksutamiseks erinevates OS-ides. hetkel on toetatud Mac ja windows aga Linuxi tugi on kohe tulemas. Kiire tutvumine erinevate postitustega näitas et selle shelli abil on võimalik suhelda nii failisüsteemiga kui ka kõikide teiste apidega mida Chrome pakub, sest see shell pakendatakse koos värske Chromium paketiga.

Lisaks on võimalik ise pluginaid kirjutada kui ka kasutada teisi mida on kommun loonud. Pluginad võimaldavad siis luua sildasid opsüsteemi ja javascripti vahele.

Siin on ka üks blogipostitus antud lahenduse kasutamisest: http://clintberry.com/2013/html5-desktop-apps-with-brackets-shell/. Tundub paljulubav ja võiks lahendada probleemi kuidas rakendusi lõppkasutajale teha ilma et peaks muretsema et igapäevaselt kasutatav browser kas ei toeta teatud funktsionee või teeb versiooni uuendus omakorda midagi katki.





No comments:

Post a Comment