Räjäyttää lian pois?
Töissä olen toteuttamassa ensimmäistä kokonaista Ajax-tyyppistä (Asynchronous JavaScript and XML) sovellustani. Koko käyttöliittymälogiikan koodaaminen JavaScriptillä tuntuu vanhan koulun sovelluskehittäjästä vähintään uskaliaalta, mutta tekniikan näytöt, mm. Google GMail ja ennen kaikkia Maps ovat melko vakuuttavia esimerkkejä tekniikan käyttökelpoisuudesta työpöytätyyppisten, mutta netin kautta käytettäviksi tarkoitettujen sovellusten toteuttamisessa. Ajax-sovelluksissa pyritään eroon webin perinteisestä pyyntö-vastaus -toimintamallista, jonka keskeisiä piirteitä ovat mm.
- kunkin resurssin (~sivun) yksilöivä ja pysyvä URL: osoite määrää sen mitä ruudulle tulee,
- tietojen syöttäminen tapahtuu muokkaamalla tietoja HTML-lomakkeella ja lähettämällä lomakkeen tiedot kerrallaan palvelimelle käsiteltäväksi,
- palautteen antaminen tapahtuu palauttamalla palvelimelta staattinen tai dynaamisesti luotu kokonainen HTML-sivu, jonka selain näyttää käyttäjälle,
- HTML-sivujen sisältöä ei juurikaan voi muokata asiakaspäässä lataamatta uutta sivua palvelimelta.
Ajax-sovelluksissa pysytään tyypillisesti yhdellä "sivulla", jonka sisältöä ja rakennetta muokataan JavaScriptin ja Document Object -mallin (DOM) tarjoaman ohjelmointirajapinan avulla. Palvelimelle kommunikoidaan erityisen XMLHTTPRequest-luokan avulla, jonka avulla palvelimelta voi pyytää vaikkapa xml-muotoisia tiedostoja, joita puolestaan voidaan käsitellä JavaScriptin ja DOM:in avulla. Näin esimerkiksi hiiren klikkaus taulukon rivin päällä voi käynnistää riviä vastaavan datatiedoston lataamisen palvelimelta ja sen sisältämien tietojen esittämisen samalle sivulle lennossa rakennettavan HTML-koodin muodossa. Pyyntö voidaan tehdä asyncronisesti omassa säikeessään, jolloin selain ei "hyydy" pyynnön tekemisen ajaksi, vaan käyttäjä voi jatkaa toimintoa, jota oli tekemässä. Pyynnön valmistuttua XMLHTTPRequest-säie kutsuu haluttua JavaScript-funktiota, joka hoitaa saadun tiedon käsittelyn ja esittämisen.
Tässä tekniikassa on myös riskinsä, joista ei suinkaan vähäisimpänä täydellinen riippuvuus selaimen JavaScript-tuesta. Sovelluksen koodin paljastaminen käyttäjille ja sen mahdolliset toimintahäiriöt voivat myös monissa tapauksissa olla tietoturvariskejä. Uskalsin kuitenkin ottaa tämän tekniikan kyseisen työprojektin välineeksi, sillä aikaisempi sovellusversio oli jo valmiiksi täysin JavaScript-riippuvianen ja sovellus tulee sisäiseen käyttöön, jolloin selainten ja työasemakonfiguraatioiden ajanmukaisuus on ns. suuren yleisön soveluksia paremmin hallinnassa. Lisäksi tiedon välittäminen ja tallentaminen XML-muodossa sopii hyvin firmassa käynnissäolevaan kattavaan hankkeeseen, jonka tavoitteena on siirtyä välitämään tietoa järjestelmien välillä lähes yksinomaan XML-muodossa.
Sanomattakin on selvää, että sovelluksen pitäisi olla käytössä hyvin pian, joten pitkiä päiviä lienee tässä vielä edessä lähiaikoina. Uusi mielenkiinoinen tekeminen kuitenkin motivoi kummasti :-)
Tähän kirjoitukseen voi viitata TrackBack-osoitteella: http://kuvitelmaa.net/cgi-bin/mt/mt-tb.cgi/172








Kuulostaa mielenkiintoiselta projektilta. Voisitkohan kertoa sen etenemisestä/toteutuksesta jossain vaiheessa enemmänkin? Minkälaisten toimintojen kanssa ongelmia tai vastoinkäymisiä ja minkälaista palautetta käyttäjiltä?
Niin, kuten siis mainitsin uudessa päreessä, niin vaihdoin sovelluksen toteutusstrategiaa tänään sen jälkeen, kun havaitsin hankalilta tuntuvia yhteensopivuusongelmia IE 6.0:n kanssa. Ei tuo ympäristö vaan kertakaikkiaan vielä ole riittävän kypsä vakavastiotettavaan sovelluskehitykseen.
Firefoxilla olisin luultavasti saanut aikaan ihan kunnollisen sovelluksen, mutta se ei nyt riitä, eikä ole aikaa tai mielenkiintoa paikkailla selainten toteusten puutteita tai eroavaisuuksia. Etenkin kun ei ole täyttä varmuutta, että saako aikaan luotettavasti toimivaa kokonaisuutta, vaikka miten säätäisi. Harmi sinänsä.
Nyt tähtäimessä on PHP:llä toteutettu sovellus, jossa käytetään vain hyvin vähän ja yksinkertaista JavaScriptiä (rivin valinta onClick-kutsulla, painikkeiden disablointi yms.).