Code inline vai code behind?

Richard Tallent linkkasi (9.7.2009: toimimaton linkki poistettu) jo vähän aikaa sitten lyhyeen keskusteluun code inlinen ja code behindin välisestä paremmuudesta, jossa oli itse antanut ainoan viisaan kommentin. Muut eivät taida lainkaan välittää siitä millä ennestään pahasti rikkonaista webiä rikkovat.

ASP.NET:in code behind -mallia perustellaan useimmiten sillä, että se mahdollistaa koodin eriyttämisen esityskerroksesta. Tilanne saattoi vielä muutama vuosi sitten taulukko- ja pikselitaiton kulta-aikana ollakin näin. Alati kasvava CSS:n hyödyntäminen on johtanut siihen, että HTML tekee yhä useammin sitä mitä sen suunniteltiinkin tekevän: kuvaa dokumentin rakennetta. Esityskerroksen visuaalinen osa, eli CSS, on jo luonteeltaan erotettu selkeästi sisällöstä, joten ASP.NET:in mallille on käyttöä enää vain pikselitaittoa suosivien ajastaan jälkeen jääneiden kehittäjien käsissä. Kaikki ulkoasumuutokset tehdään CSS-tiedostoon, ja jos HTML:ää on tarve muokata ollaan muokkamassa dokumentin rakennetta. Rakennetta muokattessa myös esityslogiikka on vaarassa muuttua, mikä tekee näistä kahdesta käytännössä erottamattomat.

Toinen Code Behind -mallin käytön perustelu on tuottavuuden lisääntyminen. Se saavutetaan muka sillä, että web designer ja ohjelmoija voivat työskennellä saman sivun parissa toisiaan häiritsemättä. Saavutettava hyöty on todellisuudessa minimaalinen, sillä käytännössä vain kaikkein tarpeellinen esitysrakenteeseen liittyvä koodi jää “kehittymättömimmissäkin” tekniikoissa sivun yhteyteen. Kaikki muu koodi sijoitetaan sivun ulkopuolelle yksinkertaisimmillaan SSI:n avulla, jos suunnittelussa on käytetään edes vähän järkeä.

Visual Studio 2005 tulee ymmärtääkseni tarjoamaan Code In Page -mallia oletusarvoisena, mikä on loistava juttu. Kunhan vain kehittäjäyhteisön enemmistö tajuaisi tämän.

Web != työpöytä

Digitoday uutisoi VET:n pelien ikärajatietokannan julkaisusta Internetissä. VET:n kauniit verkkosivut johdattelevat Pelihakuun (IP-osoite päivitetty 5.7.2011. VET huom: DNS on keksitty). Mahtavaa, pääseen taas lempiaiheiseeni.

Onhan se hienoa, että heikompikin VB-ohjelmoija osaa ihan itse tehdä sivutuksen, kun Microsoft on sen valmiiksi koodannut DataGridiin. Tiedoksi vain, ettei webissä ei ole mitään kiinteämittaisia lomakkeita, jotka on pakko saada ruudulle mahtumaan, vaan sivuja voidaan tarvittaessa vierittää. 10 hakutulosta per sivu on vitsi. JavaScript-vaatimus sivutuksen toimimiseksi on kohtuuton valtiolliselta Internet-palvelulta. Satunnainen pyytämättä tapahtuva kielen vaihtuminen ruotsiksi on erittäin hupaisaa. Viimeistelemättömyydestä kielii myös se, että ollaan hakutulosten sivulla yksi, vaikka mitään vielä ei olla haettukaan.

Älkää Visual Basic -ohjelmoijat suuttuko yleistyksestäni.

Mikä ASP.NETissä on tehty oikein

Huomasin narisevani aivan liikaa ASP.NETistä, sillä pidän teknologiasta ja käytän sitä vapaaehtoisesti. Päätin siis listata ne osat, joihin olen siinä ja ylipäätään koko .NETissä mieltynyt.

1. C#

Erittäin loppuun asti mietitty kieli. Puhdasta nautintoa vuosien VBScriptin vääntämisen jälkeen. Microsoftin sitoutuminen kielen kehittämiseen on myös hyvä asia.

2. Olio-ohjelmointi

Oliomallia on hyödynnetty ja sitä pääsee hyödyntämään ASP.NETissä erinomaisesti.

3. Framework

VBScriptin jälkeen tietysti melkein mikä tahansa tuntuu hyvältä, mutta joka tapauksessa .NETin framework on todella monipuolinen ja suurimmaksi osaksi hyvin suunniteltu paketti. Menneitä ovat ne ajat, jolloin melkein mitä tahansa tehdäkseen oli ostettava komponentti.

5. Omien kontrollien tekeminen

Vaikka web-kontrolleilla voi saada pahaakin jälkeä aikaan, on uudelleenkäytettävyys ja eristäminen muusta sovelluksesta merkittävä etu verrattuna esimerkiksi vanhan ASP:n include-malliin. Includeita silti välillä kaipaa edelleen, niilläkin kun on käyttönsä.

6. Ohjelmakoodin erottaminen merkkauskielestä

Aina tuota eroa on mahdoton tehdä, mutta useimmiten se selkeyttää sovelluskehitystä ja helpottaa työskentelyä ei-ohjelmoijien kanssa. Välillä tämä ero tehdään DataGrideillä ja muilla pirullisilla keksinnöillä, mutta asiat voi tietysti yhtä hyvin tehdä järkevästikin.

Muita hyviä puolia on kovaa vautia tulossa Whidbeyn muodossa. Arkistosta löytyy itse poimimani ennalta parhaalta kuulostavat puolet.

Nyt jos höpisisi jostain ihan muusta seuraavaksi.

Tyylitöntä koodausta

Microsoftin ASP.NET-tiimi on keksinyt taas yhden pyörän uudestaan kehittäessään teematukea tulevaan ASP.NETin 2.0-versioon. 15 Seconds esittelee featuren. Ei ole pakko käyttää, tiedän. Kaipa tällä jotain kotskasivukoodaajia taas yritetään kosiskella, mutta kukaan pienen budjetin tekijä ei Microsoftin web-tekniikkaa tule valitsemaan selkeästi kalliimpien hosting-kulujen takia. Tuntuu siis turhalta taistelulta. Päivittäisivät vaikka selaimensa ajan tasalle, niin css Zen Gardenin toimivaksi todistama CSS-tyylinvaihto voisi yleistyä. Jotain yritystä oikeaan suuntaan on näköjään viimein nähtävissä.

Pari linkkiä ja huono otsikko

MSDN tarjoilee asiallisen artikkelin aiheesta kuinka työstää erimuotoisia sisältöjä tarjoavia verkkosivuja. Artikkelin mielenkiintoisin puoli koskettelee keinoja päästä eroon URL:n parametreistä.

Ikävä vain, että ASP.NETin HttpHandlerit on kytkettävä johonkin tiedostopäätteeseen. Käyttäjälle voi tulla yllätyksenä, että www-palvelin väittää kansion /sivut/yritys/ puuttuvan kokonaan, vaikka /sivut/yritys/johto.html kiltisti yrityksen johtoa esittelikin. Tämän voi kiertää vain ostamalla tai vääntämällä oman ISAPI-filtterin. Tietysti voi luoda nuo virtuaaliset kansiot ihan fyysisestikin ja panna niihin toimivaa sisältöä, mutta se menee täysin dynaamisen saitin tapauksessa helposti sotkuiseksi. Apachella kaikki tämä on hiukan helpompaa.

Jeremy Zawodny muistaa taas sanity checkien (mitähän ne ovatkaan suomeksi, ei tule mieleen) tärkeyden. Pään hakkaaminen seinään on osattava lopettaa ajoissa.