Teenuse/kliendi koodi on valmis juba üle 1000de rea. Kõvasti rohkem kui ootasime. Mida kaugemale jõudsime, seda rohkem kasvas huvi ning tekkis ideid uute asjade tegemiseks.
Kirjutan siia pikemalt enda tehtud meetoditest ning jamadest nende tegemisel.
Esimene kõige raskem osa oli vast arusaamine, et mis pagana asi see veebiteenus on. Temperatuuri konvertimise näitest jäi nagu kuidagi väheks. Aga kuna kogemus on kõige parem õpetaja, siis kõigepealt tuli praktika ja siis teooria. Arusaamine tekkis sageli alles meetodite tegemise ajal, et mis ja kuidas võiks olla. Aga vähemalt tekkis.
Veebiteenuse tegemisega alustas Kristjan, tehes valmis lihtsamad funktsioonid. Kuna põhi oli all, siis asjade täiendamine ning juurde tegemine olid ka veidi lihtsamad.
Kõigepealt sai tehtud sisse-välja logimine ning kõik sessioonidega seotud. Eeskujuks VRII-he 9sas praks. Iga kasutaja sisselogimise ajal genereeritakse talle unikaalne session_key, mille olemasolu kontrollitakse iga sisselogimist eeldava funktsiooni juures.funktsioon uuendaSessiooni pikendab sessiooni logimist eeldavate meetodite kasutamisel, kontrolliSessiooni vaatab kas sessioon on veel aktiivne. Väljalogimisel kirjutatakse sessiooni aegumise aeg üle DateTime.Now-ga.
Paroooli hashimiseks on kasutusel sha1 algoritm. Parool salvestatakse andmebaasi hashitud kujul ning sisselogimisel sisestatud parool hashitakse ning võrreldakse andmebaasis olevaga.
Vahepeal sai tehtud toodete ning kasutajatega seotud funktsioone. (lisaKasutajagrupp, lisaKategooria jne).
Kasutaja lisamist on kahte tüüpi:
üks ei eelda sisselogimist ning paneb loodava kasutaja grupiks automaatselt tavakastuaja.
Teine lisamine on mõeldud administraatorile ja sellega saab lisada tähtsamaid asjapulki (teisi adminne, müüjaid jms).
Seejärel tulid kasutajarollid. Algselt pandi kasutajale ta kasutajagrupiID kasutaja tabelisse, kuid et kasutaja saaks olla ka mitmes eri rollis, siis oli vaja vahetabelit kasutaja_rollis. Lisades kasutajat andmebaasi, tuli lisada ka tema id ja kasutajagrupi id tabelisse kasutaja_rollis.
Iga meetodi juures on öeldud mis kasutajaõigused peavad olema selle meetodi teostamiseks ning toimub õiguste kontroll.
Raskeimad kohad:
kasutajagruppide haldus, sisselogimine. Raske oli nende tööpõhimõtet leiutada. SQL süntaksiga harjumine võttis ka kaua, õigeid näiteid oli raske leida.
Tüütu oli see, et alguses heauskselt valmistehtud asi vajas sageli täiendamist ja ümberegemist, osaliselt oma läbimõtlematuse pärast, osalt ka asja ülesehituse tõttu. (andmebaasitabelite muutmised, uuendaSessiooni lisamine igalepoole jms).
Oma lollusest jamasin kõige kauem kasutajanime olemasolu kontrolliga (et ei tekiks topelt nimesi andmebaasi). Kuna ma ei pannud datareaderit while sisse, siis ta küll kontrollis ilusti, et kas kasutajanimi on olemas, kuid kui polnud, siis sain errori: Exception Details: System.InvalidOperationException: Invalid attempt to read when no data is present. Loogiline värk küll, kuid kuidagi ei saanud tast lahti. Proovisin leiutada igasugu eri rakette, et seda korda saada (ExecuteNonQuery()-ga lugeda ridu, et milles muutus on toimunud ja sellejärgi if-lause jms). Kui 3h hiljem juhuslikult visual basicu tutorialist leidsin if lause readeri ümbert, siis ei teadnudki kas nutta oma lollusest või naerda kergendusest, et korda sai.
Antud teenuse tegemine andis väga hästi ülevaate, et mis asi on veebiteenus. Ja tundub et lausa täitsa asjalik asi on pikas perspektiivis: muudatusi teha on inimlik.
Kuna meist keegi pole varasema kogemusega superprogeja ning pooled käivad tööl jms, siis arvan, et tulemusega võib täitsa rahul olla. Pole viimasel õhtul tehtud suva käkk, et midagigi oleks. Ka ajakasutus oli enamvähem: alustasime tegemisega peale töö välja kuulutamist. Peale esimest nädalat küll tekkis paus sisse, kuid vähemalt olime asjad läbi rääkinud ning oli teada mis vaja teha on.
Saime mitmed korrad kokku kohvikus arutamaks, et mida ja mismoodi teha, kuid kodeerimine toimus igalühel eraldi. Failide jagamiseks kasutasime Dropboxi.
Tööjaotus:
Liisa: XML asjad, teenus
Hannes: teenuse klient
Jürgen: Flickri API
Kristjan: Teenus
Selle projekti puhul oli hea teha asju mitme peale, igaüks sai tegeleda millegagi teistest mitte oluliselt sõltudes. Polnud kattuvaid jubinaid jms. Lõpupoole oli tüütu teha klienti ja rakendust samal ajal,kuid see polnud suur mure.
Tahaksin tänada ka Madist, kellel tänu mu rumalatele küsimustele jõudis juuste halliks minemise aeg kindlasti nii mõnegi aasta võrra lähemale.