MSDN: Visual Studio .NET Whidbey top 10 features

Huoh. Visual Studio ei yllättäen aio ainakaan keventyä. Listan featureista ehkä parista on lähinnä satunnaista iloa. Eipä se mitään. ASP.NET kehittyy onneksi samalla sen verran järkevään suuntaan, että vaihto kevyeen tekstieditoriin on helppoa. Säästyy firmalta rahat ja minulta hermot.

Anteeksipyyntöjä

Absum.netin nimetön blogaaja loukkaantui eilisestä kirjoituksestani. Pahoittelut tarpeettoman ilkeästä tekstistäni.

Sinänsähän vika ei ollut ratkaisussa eikä kysyjässäkään, sillä ongelma ja sen ratkaisumalli olivat ihan loogisia tuollaisessa tilanteessa. Vikaa voisi kai hakea enemmän siitä teknologian tarjoajassa, joka on päättänyt tuollaisen ohjelmointimallin ulos pulauttaa ja sitä kautta ikäviä ongelmia aiheuttaa.

Jos kontrolleita sidotaan johonkin datalähteeseen ne joudutaan oikeasti lataamaan joka sivulatauksella uudelleen, vaikka siltä ei ohjelmoijasta ehkä näytä. Kun rakennetaan verkkopalveluita, joilla on potentiaalisesti rajaton käyttäjäkunta, on joka ikisen tietokantakutsun oltava varmasti tarpeellinen. ASP.NETin malli taas johtaa siihen, että sivulatauksia ja tietokantahakuja tehdään helposti lukuisia täysin turhaan. Käyttöliittymät saattavat parantua jonkin verran, kun isojen ja monimutkaisten lomakkeiden rakentaminen on helpompaa, mutta toisaalta web ei ehkä ole oikea ympäristö isoille lomakkeille. Tämä nyt vain yhtenä esimerkkinä mallin heikkouksista.

Kenties olen vain vanha jäärä.

Mikä ASP.Netissä on vikana

Tällaiset ongelmat (toimimaton linkki poistettu 9.7.2009) ja niiden ratkaisut saavat minut välillä repimään hiuksiani. Selvästi sekä kysyjä että vastaaja ovat ymmärtäneet väärin koko webin toiminnan. Tilattoman webin pakonomainen muokkaaminen toimimaan kuin VB:n lomakkeet johtaa vain lukukelvottomaan, tehottomaan ja typerään koodiin. Kyseisessä tilanteessa voisi kenties harkita vaikkapa sellaista uutta keksintöä kuin <input type=”reset”/>.

Netti on pullollaan ohjelmointivinkkejä, ja .NET tuntuu keränneen valtavan määrän eritasoisia ohjelmoijia teksturin ääreen. Intialasen Saravana Kumarin artikkeli Redirecting User to Login Page After Session Timeouts on yksi huonoimmista koskaan lukemistani. Kirjoittajan eduksi sanottakoon, että asia on esitetty ihan selkeästi. Missään vaiheessa hän ei kuitenkaan ole ilmeisesti tullut ajatelleeksi, että artikkelissa ei ole mitään järkeä. Mies on toisaalla sivuilla esitellyn mukaan kerännyt kasan Microsoftin sertifikaatteja. Katosi moisten arvostus minulta ennätysajassa.

Ai mitäkö artikkelissa on vikana? Muun muassa se, että käyttäjältä kysymättä sivun uudelleen lataaminen on hyvin todennäköisesti erittäin ärsyttävää. Toisekseen se, että joku yksittäinen sivu on ollut selaimessa auki session keston ajan ei vielä tarkoita, ettäkö sessio olisi todella päättynyt. Käyttäjällä kun voi olla auki vaikka kuinka monta ikkunaa. Jos yksi niistä jää vähän pienemmälle huomiolle joksikin ajaksi ja sitten sen pariin palataan, ei väärä ilmoitus katkenneesta sessiosta ole järkevä. Jälleen kerran webin todellinen luonne on täysin hukassa VB-ohjelmoijalta.

Tätä webin luonnon vastaista, huonoa HTML:ää tuottavaa, potentiaalisten tietoturva-aukkojen täyttämää ohjelmoitimallia ei Whidbeykään tule korjaamaan. Sitä odotellessa käytän vain ja ainoastaan ASP:Repeateria ja hyvin säästeliäästi mitään "palvelinpäässä ajettavia" kontrolleja. Niinkin käytettynä ASP.Net hakkaa vanhan ASP-mallin mennen tullen.

Hyviä uutisia

Päivän uutisia lukiessa ei voinut olla toivomatta olevansa Microsoft-onnelassa PDC-tapahtumassa. MS julkisti paljon mielenkiintoisia asioita sekä tulevasta Windowsista, Longhornista että Visual Studio .Netin ja .Netin 2.0-versiosta, Whidbeystä. Kaikki Longhorn-hypen on tietysti mukavaa kuultavaa, mutta todellisuudessa mielenkiintoisinta on Whidbey. Klassinen Steve Ballmerin räppi tulee vääjäämättä mieleen näitä lukiessa.

Vihdoinkin ASP.NET järkevöityy siten, että kääntämisrumbasta päästään eroon. Tämä tapahtuu uudella codebeside-mallilla, jossa vanhasta codebehind-mallista luovutaan. Kuvauskieli ei enää perikään kooditiedoston Page-implementaatiota vaan nämä kaksi ovat osa samaa luokkaa, vaikkakin edelleen eri tiedoistoissa. Sivutuotteena ainaisesti epäsynkronissa olevista ja muutenkin turhaa kirjoitustyötä vaativista kaksinkertaisista objektien määrittelyistä päästään eroon. Ei kauniin OOP:n mukaista, mutta tehokasta.

Whidbeyn panostaa muutenkin kääntämisen vähentämiseen. Tutun bin-hakemiston kumppaniksi esitellään uusi code-hakemisto. Se nimensä mukaisesti nielee lähdekoodia joka käännetään vasta sovellusta ajettaessa. Ja jotta loppukäyttäjä ei kärsisi kehitystyön helpottumisesta, esitellään uusi tapa kääntää ennalta kaikki web-sovelluksen kooditiedostot (aspnet_compiler.exe).

Kymmeneen kertaan kopiotu HTML vähenee uuden Master Pages -tekniikan avulla. Käytännössä sillä korvataan vanhan ASP:n includet isäsivulla, jota eri toiminnallisuutta tarjoavat sivut käyttävät. Yhtenäisen ulkoasun ylläpitäminen on siten jatkossa huomattavasti helpompaa. Kevyeen kehitystyöhön on tarjolla uusia tapoja yhdistellä dataa kontrolleihin entistä vähemmällä tai jopa täysin ilman koodia.

IDE:n tulevat ominaisuudet vaikuttavat myös lupaavilta. Varsinkin versionhallintaa käyttävässä monen ohjelmoijan ympäristössä ongelmallisista projekti- ja solution-tiedostoista päästään eroon. Visual Studio tulee sisältämään oman kehitystyöhön tarkoitetun web-palvelimen joka vastaa vain koneen sisältä tuleviin sivupyyntöihin. Paketti sisältää pitkään paikallaan polkeneen SourceSafen uuden 2004-version, joka arvatenkin pohjautuu SQL Serveriin.

Kaikkien hyvien ideoiden lisäksi on aina oltava huonojakin. Kehnoimmalta kuulostaa idea adaptereista, joilla voidaan palvella erilaisia asiakasohjelmia tarjamalle niille erilaista kuvauskieltä. Tämä johtaa aivan väärälle tielle. Oikea tie on tarjota selaimesta riippumatta mieluummin taulukotonta XHTML:ää.

Mainitsematta jääneet asiat ilman turhaa kritiikkiä voi lukaista MSDN:n sivuilta (toimimaton linkki poistettu 9.7.2009). Pakollista luettavaa ovat myös vasta julkistetut, mutta jo vanhaa tietoa olevat C# 2.0:n speksit (toimimaton linkki poistettu 9.7.2009).