Talk:LLL
Retsensioon
Mulle tundub, et xml ei lähe kokku selle veebiteenusega, mida tahetakse teha. Võimalik muidugi, et tehtigi lihtsalt hetkel suvaline xml.
XML paistab muidu olevat mõistlik aga ma arvan, et 4-ndas dimensioonis ei oleks ma kasutanud <nimi> väljal atribuute. Jääb mulje, et seda tehti sellepärast, et tööülesanne ütleb järgmist: "Lisaks tuleb kasutada 3-el dimensioonil attribuute, mis on enamat, kui lihtsalt ID".
XML schemale otsa vaadata siis ma vaatan küll, et see on vigane. Miks käiakse üle mitu korda elemendid? Isegi Visual Studios automaatne schema tegemine ei tooda sellist asja, proovisime järgi. Või oskate öelda, miks nii tehtud on?
XSL faile on pandud 3 tükki, aga kõik tunduvad mulle koodi poolelt sarnased. Selle asemel oleks võinud lisada puuduliku XML faili formaadi muutmise XLSLi.
Samas kiidaks veebiteenuse kirjelduse kohapealt tiimi !
Meeskond PhoneBook
Vastus
Xml ei pidanudki veebiteenusega kokku minema. Ehk jah, tegime täiesti suvalise xmli. Schemas oli jah viga sees, kuna kasutasin automaatset schemat ja väike viga oli xmlis sees. Vabandan, et ise seda enne ei olnud märganud ja ära parandanud. Nüüd peaks schmea ok olema.
Retsensioonid veebiteenusele ja klientrakendusele meeskonnalt PhoneBook
Veebiteenus
Esialgu planeeritud teenuse ja rakenduse analüüs/kirjeldus on wikis päris asjalik, kuid selle asemel realiseeritud telefoniraamatu kohta puuduvad mingisugusedki kommentaarid. Õnneks kaitsmisel sai seda nähtud.
Andmebaasi tabelite loomiseks antud skript eeldab, et selle nimeline andmebaas on juba olemas. Väike ebamugavus, sellest sain üle. Rollid tulevad skriptiga kaasa, see meeldis.
Loodud tabelitest on näha, et saab luua erinevates rollides kasutajaid, kellel on igalühel kontaktid ja võimalus neid valikuliselt jagada mingis ajavahemikus. Näeb üsna kena välja, kuid:
- ei võimalda lisada uut tüüpi kontakte ilma andmebaasi ümber tegemata
- auditeerimise poole pealt ei jälgita, kes midagi loob/muudab/kustutab. Ilmselt ei peetud vajalikuks.
- kasutaja username maksimaalne pikkus on 12 tähemärki ja passwordil 15 tähemärki. Tekkis küsimus, et miks need piirangud nii karmid on.
Väljade andmetüübid on minu arvates üsna arukalt valitud.
Service class ja interface on millegipärast ühte faili kokku pandud, selguse mõttes võinuks need eraldi olla. Service klassil on lisatud atribuut [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)], ehk siis teenusest on korraga ainult üks instance. Miks?
Katsetasin teenuse funktsioone WCF Clientiga. Mõned tähelepanekud:
- Kõik meetodid töötavad ja annavad sobivates oludes vastuse.
- Ebaõnnestunud päringu korral ei saadeta mingit vastust. Võibolla õige teguviis, kuid test client ei suuda debug sessionit jätkata ning see jookseb kokku. Lihtsalt väike ebamugavus testijale või ka teenusele rakenduse arendajatele.
- Ükski meetod ei vaja eelnevat logini ja passworde hoitakse plaintext kujul. Sertifikaate ei kasutata. Bindinguks on WsHttpBinding, kuid security pole sisse lülitatud.
- Saab luua sama kasutajanime ja passwordiga kasutajaid. Login õnnestub neist vaid esimesena loodul.
- Kõikidel on vaba ligipääs kõikide kontaktidele. See ei ole probleemiks, kui ongi mõeldud teha ühine telefoniraamat kõikidele kasutajatele.
- Meeldis, et päringutes sai spetsifitseerida soovitud tulemuste arvu.
Kontaktide jagamise realiseerimiseks pole ilmselt aega jäänud.
Failide Auth.cs ning AuthData.cs põhjal võib arvata, et autentimise ja muu turvalisusega seonduva lisamine on plaanis olnud, kuid pooleli jäetud.
Userite / kontaktide salvestamine on pandud vastava andmetüübi kirjelduse faili, ülejäänud operatsioonid eraldi – andmetüübile vastavasse meetodifaili. Arvan, et oleks olnud loogilisem ka salvestamine ülejäänud meetoditega kokku panna.
Meetodeid on palju rohkem kui teenuses võimalik välja kutsuda, kaasa arvatud kontakti jagamise funktsionaalsus. Üldjuhul on kõik päringud korralikult kirjutatud, päris kõiki jupphaaval läbi töötama ei hakanud. Märkasin, et näiteks uue kasutaja salvestamisel kontrollitakse eelnevalt selle olemasolu ja vajadusel hoopis uuendatakse seda – väga tubli!
Kokkuvõttes on teenus planeeritud põhjalik ja olemasolevad osad tehtud üsna kenasti. Miinustena näen täielikku turvalisuse puudumist, teostatud funktsioonide vähest hulka ja mõningaid pisivigu. Andmete valideerimiseks ei tehta teenuse poole pealt midagi ja statistikat või kasutajate haldust ei eksisteeri.
Klientrakendus
Esimesena torkas silma WPF page-ide kasutamine. See on mulle kui kasutajale väga meelepärane. Ka ülejäänud kasutajaliidese disain on lihtne ja selge. Üks väike ebamugavus – login aknas pole defaultina username kastis kursor aktiivne ja enteriga ei saa login nuppu vajutada. Arvan, et enamikele kasutajatele oleks programmi selline käitumine ootuspärane.
Registreerimine toimib väga edukalt, lausa nii edukalt, et võib luua lõputul hulgal kasutajaid, kellel pole ei kasutajanime, passwordi ega emaili. Andmebaasis on need tühja stringina, ehk siis mitte null väljad, vältides edukalt teenuse/andmebaasi poolt kehtestatud piiranguid. Siinkohal võiks olla kontroll nii teenuse kui rakenduse küljes, kuid kahjuks pole kummaski.
Login on edukas tüüpkasutaja korral, kuid annab nullpointer exceptioni, kui üritada sisse logida mõne eelnevalt loodud vigase kasutajaga. Ka vale kasutajanime/parooli korral jookseb rakendus unhandled exceptioniga umbe.
WPF page-kontrollidega navigeerides (vasak ülemine nurk, nooled ja rippmenüü) sai peatselt selgeks, et nuppe vajutades luuakse kogu aeg uusi lehti, vanadele saab navigeerida rippmenüüst ning neis säilib ka eelnevalt sisestatud info. Kasutajana oleks oodanud, et liigeldakse olemasolevate lehtede vahel (login ja registreerimine). Koodi lähemalt uurides (nt. registreeri_page.xaml.xs) selgub, et ka teenusega luuakse kogu aeg uusi ühendusi. Jõudluse seisukohalt ei tundu see hea lähenemisena.
Nii search, browse kui add contact töötavad. Loomulikult saab lisada tühjade stringidega kontakte, nagu ka kasutaja registreerimise korral. Search näitab detailides enne tulemuse valikut mingit kuupäeva miinimumväärtust, see ei peaks seal ilmselt olema.
Mõne otsingu korral esines sama väärtuse topelt kuvamist, ka selectionina olid nad korraga aktiveeritud. Põhjust otsides seda esimese hooga ei leidnud, jätan selle arendajate hingele.
Enne sisse logimist sulgub programm ristist sulgedes edukalt, debug lõppeb. Peale sisselogimist see enam ei õnnestu, ka logout tehes jääb midagi mällu ja debug sessioon ei lõppe. Millegipärast jääb kliendi .exe jooksma (ka task manageris on näha). Koodi uurides on justkui igalpool vajalikes kohtades this.Close() käsud olemas, võibolla on asi visual studios endas.
Koodis kasutatakse mõistlikke muutujanimesid ning aeg-ajalt esineb ka mõni rida kommentaari funktsiooni kirjelduseks. Üldjoontes on ülesehitus selge. Rakendus ei ole mahult suur ning on hoolsa inimese käes isegi päriselt kasutuskõlbulik. Disain, nagu juba mainitud, on piisavalt hea. Eeskujulikust kasutusest kõrvale kaldudes tekivad probleemid, millega programm pole arvestanud. Mingit andmete valideerimist ei ole. Arvestades ajanappust selle rakenduse loomiseks, pean tulemust piisavalt heaks.