TechDays vieraskynä: Moderni web-kokemus syntyy avoimella mielellä
Useimpien kehittäjäkonferenssien esitysten perusteella web näyttää aika tylsältä, ja useimmat Microsoft-ympäristön selainsovellukset jätetään ASP.NET-komponenttien perusulkoasun varaan. Mutta mitä sitten, kun pitäisi tehdä kaunista webiä suuren maailman tyyliin?
Jouduimme pohtimaan tätä kysymystä, kun asiakkaamme pisti alkusyksystä tiukan toimeksiannon: Pitäisi syntyä sellainen verkkopalvelu, joka kestää sekä visuaalisesti että toiminnallisesti vertailun minkä tahansa modernin saitin kanssa. Ai niin, ja hakukonenäkyvyyden, mobiililaitteiden käyttökokemuksen ja Javascriptittömän version toimivuuden kaltaisten perusjuttujen on tietysti oltava kunnossa. Plus että kuormaa ja murtautumisyrityksiä olisi syytä sietää lähes rajattomasti.
Web-hotnessia M$-platalla?!?
Kun juttelee näyttävien webbisaittien tekijöiden kanssa, ASP.NET-alusta ei noin keskimäärin ole kovin kovassa huudossa. Suorastaan kuulostaa siltä, että nätin webin tekeminen vaatii vähintään Rubya, Pythonia tai Scalaa, eikä MySQL tai peräti MongoDB:kään olisi pahitteeksi.
Me kuitenkin lähdimme vääntämään nykyaikaista palvelua Microsoft-alustalla, ja saimme tiimiimme pari web-kehittäjää, joille redmondilainen alusta ei ollutkaan tuttu. ASP.NET MVC 3 Razorin kera yllätti meidät kaikki notkeudellaan, ja frontend-spesialistiemme jQuery-osaaminen yhdistyi varsin saumattomasti kehitystyökalujen nykylinjaan: sekä ASP.NET MVC että Visual Studio antoivat hyvää taustatukea projektille, jossa iso osa ohjelmakoodista oli selaimella suoritettavaa JavaScriptiä.
Myös avoimen lähdekoodin tarjoomalla oli paljon tekemistä projektimme kanssa. Datakerrokseen valikoitui jo varhain NHibernate, käyttöliittymätasolla taas CSS:n kirjoittamista helpotti LESS-kirjaston .NET-versio, dotless. Mukana on myös joukko muita ilmaiskirjastoja. Monimutkainen teknologiapino, mutta lopulta yllättävän helposti yhteensovitettavissa.
Palaute frontend-kehittäjiltämme oli ilahduttavaa: ”Harvoin millään alustalla on päässyt näin vapaasti säätämään kaiken täsmälleen kuntoon.” Ei ihan sitä, mitä Microsoft-alustasta – varsinkaan ASP.NETistä – on totuttu kuulemaan!
Suunnittelun kantapäätä koputtelemassa
Perinteisesti meitä kehittäjiä on opetettu tekemään liiketoimintasovelluksia. Pyhät DataGridimme lukevat tietokantaa, ja btnUpdatemme vievät tietoja takaisin. Joskus lomakkeemme ovat saatavilla julkisesta webistä, mutta yhtä kaikki, meitä valmistetaan asioinnin mahdollistamiseen. Kun sitten pitäisi tehdä jotain asiakkaan hurmaavaa, haasteet ovat erilaisia.
Ajatellaan esimerkiksi hakua, jossa käyttäjälle halutaan tarjota mahdollisimman nopeasti visuaalisesti runsas tulosjoukko, jonka selailuun uppoaa – ei siksi että hakisi tietoja, vaan siksi että sisältö vain on niin kiehtovaa. Perinteisesti teimme aina sivun, joka teki http-pyynnön hakutulosten noutamiseksi. Sitten eliminoitiin näkyvä sivunlataus updatepanelilla tai jollain muulla ajax-ratkaisulla. Mutta meille sekin olisi ollut liian kömpelöä.
Onneksi tilanne oli sellainen, että tiukasti pakattu ja sopivin cache-otsikoin varustettu JSON-tiedosto kaikesta datasta voidaan ladata selaimeen jo ennakolta. Niinpä kun käyttäjä tekee haun, palvelimella ei edes käydä – haku on ohjelmoitu JavaScriptillä, ja käyttökokemus vastaa nopeudeltaan työpöytäsovellusta tai Silverlightia. Ei mitään ydinfysiikkaa tämäkään, mutta harvemminpa tulee perussivustoilla vastaan.
Oikean ajattelun tie
Hakuesimerkki osoittaa, ettei tällaisten projektien oikea haaste liity koodaukseen. Toki pitää osata JSONia, HTTP:tä, JavaScriptiä ja tietokantahakujen optimointia, mutta paljon vaikeampaa on keksiä, millä tavalla lopputulos on houkuttelevin ja käytettävin. Onneksi web on melkoisen avoin: ideoita voi hakea surffailemalla, ja usein toteutuksestakin saa jonkun idean view sourcella.
Microsoftin web-alusta on ottanut viimeisen muutaman vuoden aikana jättimäisen askeleen eteenpäin kohti avointa web-kehitystä. Samaan aikaan useat vapaan lähdekoodin .NET-projektit alkavat saavuttaa sellaisen kypsyyden tason, että niiden käyttäminen projekteissa on järkevää: samalla saadaan käyttöön myös paljon innovaatioita, joita monilla ”hipimmillä” alustoilla on kehitelty.
Suurin jarru loisteliaille ASP.NET-sovelluksille olemme me kehittäjät. Monissa meistä istuu enterprise-mentaliteetti, jossa uusien työkalujen käyttöönottoon vaaditaan koulutus tai peräti sertifiointi, eikä toteutustiimi halua kirveelläkään ottaa vastuuta ulkopuolisista komponenteista.
Tälle ajattelulle on paikkansa, mutta moderniin webiin se ei riitä. Parasta ei yksinkertaisesti tule riittävän nopeasti, jos ripustautuu yhden toimittajan innovaatioihin – ei, vaikka kyseessä olisi maailman suurin ohjelmistotalo. Microsoft itse avautuu jatkuvasti enemmän, ja kehittäjinä paikkamme on tämän muutoksen etujoukoissa.
Rohkeutta, toverit!
Jouni Heikniemi on pitkän linjan Microsoft-kehittäjä ja toimii konsulttina Offbeat Solutionsissa. TechDays 2011 –tapahtumassa hän kertoo yhdessä Valve Brandingin Marcus Tallbergin kanssa projektista, josta nämä kokemukset ovat peräisin. Luvassa on demoja, vinkkejä ja tilitystä – niin ohjelmoijan kuin ulkokuoren kehittäjänkin näkökulmasta.