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

2 Kommenttia Tämän kirjoituksen kommenttien Atom-syöte

eepp kommentoi 18.10.05 klo 11:36:

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.).

Jätä kommentti


Kuukausiarkistot

Syötteet (feeds)

Creative Commons License
Tämän blogin sisältöön sovelletaan Creative Commons lisenssiä.

Kiitokset

Spämmitorjunnan tarjoaa Akismet

Flickr-integrointi: phpFlickr

Jaiku-integrointi: Services_JSON

Sirkusta pyörittää Movable Type Open Source (MTOS) 4.1

Valid XHTML 1.0 Strict Valid CSS!

µblogi@Jaiku Jaiku-virran Atom-syöte

Ei Jaikuja viimeisen kahden vuorokauden aikana.

Muualta poimittua Atom-syöte

Kiinnostavia keikkoja Atom-syöte

Valinnat: Ilkka Rinne ja Anna Ruhala

    Muita musiikitapahtumia: Meteli.net/Helsinki

    Täyskokoiseen kalenteriin
    Miten kummassa Google Kalenterista saa tapahtumia tällä lailla ulos?