Talk:V: Difference between revisions

From ICO wiki
Jump to navigationJump to search
No edit summary
No edit summary
Line 47: Line 47:
Teenuse installeerimine ja käivitamine õnnestus vastavalt juhistele. Hõlbustamaks teenuse käivitamist ja ASP.NET-il põhinevat autentimist, oleks juhised võinud olla mõnevõrra detailsemad, kui viide videoloengule, kuid olles sama asja ka varem läbi teinud, ei osutunud ka käesolevate juhiste puhul teenuse käivitamine üle jõu käivaks.  
Teenuse installeerimine ja käivitamine õnnestus vastavalt juhistele. Hõlbustamaks teenuse käivitamist ja ASP.NET-il põhinevat autentimist, oleks juhised võinud olla mõnevõrra detailsemad, kui viide videoloengule, kuid olles sama asja ka varem läbi teinud, ei osutunud ka käesolevate juhiste puhul teenuse käivitamine üle jõu käivaks.  


Kogu teenuse andmekiht on ülesehitatud code-first põhimõttel, kasutades Entity Framework-i. See tähendab ka seda, et testandmed on puhtalt endal võimalik sisestada. Koodi poolest on tegemist igati eeskujuliku projektiga, mis on jagatud mitmesse kihti. Andmebaasi funktsionaalsuse kasutamise jaoks on loodud mudelid, mis on korralikult varustatud annotatsioonidega. Andmetele ligipääsu jaoks on tekitatud DAL kiht, mis kasutab repositooriume, mis võimaldavad vajadusel lihtsalt ka kasutatavat andmebaasi kas mõne teise andmebaasi või kasvõi veebiteenuse vastu välja vahetada. Lisaks on kasutusele võetud Unit Of Work konteiner ning kasutatakse inversion of control põhimõtet, kasutades selleks Ninject klassiteeki.
Kogu teenuse andmekiht on ülesehitatud code-first põhimõttel, kasutades Entity Framework-i. See tähendab ka seda, et testandmed on puhtalt endal võimalik sisestada. Koodi poolest on tegemist igati eeskujuliku projektiga, mis on jagatud mitmesse kihti. Andmebaasi funktsionaalsuse kasutamise jaoks on loodud mudelid, mis on korralikult varustatud annotatsioonidega. Andmetele ligipääsu jaoks on tekitatud DAL kiht, mis kasutab repositooriume, mis võimaldavad vajadusel lihtsalt ka kasutatavat andmebaasi kas mõne teise andmebaasi või kasvõi veebiteenuse vastu välja vahetada. Lisaks on kasutusele võetud Unit Of Work konteiner ning kasutatakse inversion of control põhimõtet, kasutades selleks Ninject klassiteeki, mis võimaldab sõltuvusi süstida.


Kokkuvõttes võiks koodi poolt hinnata väga kõrgelt. Ka teenuse poole peal kasutatakse ilusti liideseid, mis on korralikult kommenteeritud. Lisaks on koodis erineva funktsionaalsuse osad viidud erinevatesse kataloogidesse või vastavad andmete päringuks loodud kihid viidud eraldi projektidesse, mis teeb potentsiaalselt projektiga ka hiljem liituvate uute arendajate jaoks koodi lugemise ja sellest arusaamise võimalikult lihtsaks.
Kokkuvõttes võiks koodi poolt hinnata väga kõrgelt. Ka teenuse poole peal kasutatakse ilusti liideseid, mis on korralikult kommenteeritud. Lisaks on koodis erineva funktsionaalsuse osad viidud erinevatesse kataloogidesse või vastavad andmete päringuks loodud kihid viidud eraldi projektidesse, mis teeb potentsiaalselt projektiga ka hiljem liituvate uute arendajate jaoks koodi lugemise ja sellest arusaamise võimalikult lihtsaks.


Teenuse poolt on kasutajatele kättesaadav koguni 16 erinevat meetodit, millele lisandub administraatorile kättesaadavad 6 erinevat meetodit. Teades teenuse üldpõhimõtet ehk pakutavat funktsionaalsust, on meetodid ka igati piisaval määral ja hästi dokumenteeritud. Kasutajale antakse kogu elementaarne funktsionaalsus nii kontakte vaadata kui hallata. Üldiselt on juba meetodite nimed suhteliselt hästi valitud ja informatiivsed ning arusaadavad. Parameetrite poole pealt võib tekkida esmapilgul natuke rohkem küsimusi ja ebaselgust, et mida ühele või teisele meetodile ette peab andma, aga juhul kui nt avataks teenus uute arendajate jaoks, kes saaksid teenusele oma klientrakendusi luua, ei ole ka siinkohal võimalik arvestatavaid etteheiteid teha, sest kõik on loogiline. Eriti kui uutele arendajatele anda ette näidis klientrakendus (nagu ka antud projekti puhul tegelikult täitsa olemas on), ei tohiks küll tekkida mingeid probleem täiendavate rakenduste loomiseks. Lisaks koodi kommenteerimisele on toodud ka lühijuhend, kus kõik kliendile ja administraatorile kättesaadavad meetodid ilusti kirjas on.
Teenuse poolt on kasutajatele kättesaadav koguni 16 erinevat meetodit, millele lisandub administraatorile kättesaadavad 6 erinevat meetodit. Teades teenuse üldpõhimõtet ehk pakutavat funktsionaalsust, on meetodid ka igati piisaval määral ja hästi dokumenteeritud. Kasutajale antakse kogu elementaarne funktsionaalsus nii kontakte vaadata kui hallata. Üldiselt on juba meetodite nimed suhteliselt hästi valitud ja informatiivsed ning arusaadavad.  
 
Parameetrite poole pealt võib tekkida esmapilgul natuke rohkem küsimusi ja ebaselgust, et mida ühele või teisele meetodile ette peab andma, aga juhul kui nt avataks teenus uute arendajate jaoks, kes saaksid teenusele oma klientrakendusi luua, ei ole ka siinkohal võimalik arvestatavaid etteheiteid teha, sest kõik on loogiline. Eriti kui uutele arendajatele anda ette näidis klientrakendus (nagu ka antud projekti puhul tegelikult täitsa olemas on), ei tohiks küll tekkida mingeid probleem täiendavate rakenduste loomiseks. Lisaks koodi kommenteerimisele on toodud ka lühijuhend, kus kõik kliendile ja administraatorile kättesaadavad meetodid ilusti kirjas on.
 
Kui vaadata, kas kontaktiraamat pakub ka funktsionaalsuse poole pealt piisavalt võimalusi. Nii on võimalik kontaktile lisada ka pilte, rääkimata tavapärastest redigeerimisvõimalustest.
 
Kõik teenuses kasutatavad meetodid annavad ka tagastusväärtuse ning nii on kasutajal ka näiteks kustutamiste puhul selge, kas operatsioon õnnestus või mitte.  


Turvalisuse poole pealt peaks olema tegemist igati korrektse lahendusega, mis kasutab juba olemasolevat ning laialt kasutatavat ning testitud ASP.NET kasutajate autentimise teeki. Selle installeerimise pool on küll tavakasutajale hetkel mõneti ebamugav, sest tuleb täiendavalt registreerida ka vastavad sertifikaadid, kuid reaalses situatsioonis oleks kindlasti võimalik ka see tegevus nö installeerimise paketis ilusti automatiseerida ja kasutaja eest ära peita. Tulemuseks on aga igati turvaline lahendus.
Turvalisuse poole pealt peaks olema tegemist igati korrektse lahendusega, mis kasutab juba olemasolevat ning laialt kasutatavat ning testitud ASP.NET kasutajate autentimise teeki. Selle installeerimise pool on küll tavakasutajale hetkel mõneti ebamugav, sest tuleb täiendavalt registreerida ka vastavad sertifikaadid, kuid reaalses situatsioonis oleks kindlasti võimalik ka see tegevus nö installeerimise paketis ilusti automatiseerida ja kasutaja eest ära peita. Tulemuseks on aga igati turvaline lahendus.
Nõutud funktsionaalsuse poole pealt on täidetud ka logimise nõue. Väikse puudusena ei leidnud küll üles, kas ja kuidas antud logisid praeguse rakenduse puhul vaadata võiks, peale otse andmebaasist päringute tegemise.
Kokkuvõttes võib loodud veebiteenust hinnata suurepäraseks, sest koodi pool on igati eeskujulik, mis järgib kõiki aines käsitletud parimaid praktikaid ja mustreid. Samuti on ka funktsionaalsuse poole pealt teenus igati toimiv ja kliendisõbralik ning mis kindlasti ka oluline, samuti teenuse jaoks tulevikus potentsiaalselt uusi klientrakendusi loova arendajasõbralik.

Revision as of 22:59, 4 June 2013

Meeskonna X-Ladu retsensioon meeskonnale V(xml):

XML fail on korralikult ülesande püstitusele täidetud ehk peab olema vähemalt 4 loogilist dimensiooni ja lisaks on kasutatud kolmel või enamal dimensioonil atribuute rohkem kui lihtsalt ID. XML fail on hea struktuuriga, midagi ei ole üleliigset ega korduvat. Tänu korralikule XML failile on konkreetne ja lihtne ka XML skeemifail.
XML stiilifailidega on väga põhjalikult tööd tehtud. Koostatud on 3 täiesti erinevat stiilifaili ning ei ole wikisse püstitatud ainult failid, vaid ka väike seletus juurde, et kellelegi ei jääks arusaamatuks midagi faili puhul(nt XML to XML kus on ära seletatud, mis vastavad olemasolevale ID-le). Meeldib XML to HTML, kuna selle järgi on võimalik kõige kiiremini otsida konkreetseid andmeid, isegi ilma otsinguta. Veel on heaks abimeheks on veel otsing, aga seal saab ainult ees-või perekonnanime järgi otsida(ei otsinud kui panna koos ees-ja perekonnanimi). Otsingut võiks saada kasutada ka nt auastmete järgi. XML to XML puhul on kerge nimi ülesse leida, aga teised vajalikud andmed on anutd suurem osa ID-dega ja neid peab eraldi failidest välja uurima.
Kokkuvõtteks on tehtud väga põhjalikult tööd, täidetud kõik vajalikud ülesanded. Andmefail on lihtsa struktuuriga, aga samas hästi ülesse ehitatud sellise suurte andmete jaoks. Skeemifailidega on palju väga palju vaeva nähtud ja võrreldes teiste meeskondadega on skeemifailid kõik 3 erinevad.


Meeskonna X-Ladu retsensioon meeskonnale V(teenus):

Meeskond V lõi teenuse, mis kujutab endast kontaktraamatut. Tegemist on WCF teenusega, mis on suures plaanis jaotatud neljaks kihiks: mudelid, andemete ligipääsukiht, teenuse library ja teenuse host.

Mudelid (Models)

Mudelite puhul on väga korralikult kasutatud annotatsioone – märgitud ära väljade kohustuslikkus, pikkused ja klientrakenduse poolne ligipääs. Lisaks on võimalik mudeleid vaadates tuvastada, et kasutusele on võetud Entity Frameworki code first lähenemine. Ära on märgitud ka mudelite (tabelite, olemite) vahelised seosed ja kasutatakse „laiska laadimist“. Mudelid on loodud igati korrektselt.

Andmete ligipääsukiht (DAL)

Antud teenuse DAL on koostatud väga põhjalikult kasutades nii repositooriume, Unit of Work'i kui ka Factory mustreid. Inimesele, kes neid mustreid põhjalikult ei tunne, võib kood kohati väga arusaamatu tunduda – andmete ligipääsukihis võiks olla rohkem kommentaare. Repode puhul on plussiks see, et on kasutatud universaalset repositooriumi ja liidest, mis lihtsustab oluliselt koodi. Erinevate osade erinevatesse kaustadesse panek (repod, liidesed, contex) on igati loogiline ja muudab koodi veelgi hallatavamaks.

Teenuse library (ServiceLibrary)

Teenuse library osas hakkas esimese asjana silma ninject ehk siis on kasutusele võetud ka sõltuvuste süstimine. Süstimise registreerimise osas on näha, et süstimist tehakse vastu Unit of Work'i ja Factory'd, kommenteertult on olemas ka lihtne repode süstimine. Kasutusele on võetud ka .Net raamistiku enda poolt pakutavad Role- ja MembershipProviderid, mis on igati mõistlik selleks, et teha lihtsamaks ja hallatavamaks kasutajatehaldust. Plussiks on veel teenuse meetodite jagamine regioonideks ja kõikide meetodite liideste korrapärane dokumentatsioon (pole lähtutud põhimõttest, et meetodi nimest piisab dokumentatsiooniks küll).

Teenuse host (ServiceHost)

Hostimiseks on eraldi võetud kasutusele WCF Application projekt, kus viidatakse teenuse libraryle. Hostis on hoogsalt konfigureeritud Web.config faili, kus on määratud ära erinevad teenuse endpointid, kasutaja autentimise, andmebaasi ühendamise ja teenuse kasutust piiravad parameetrid. Äsja mainitud punktid annavad kogule teenusele palju juurde ja näiravad, et teenuse loojad on kursis ka teemadega, mida aine raames otseselt käsitletud pole.

Kokkuvõtvalt võib öelda, et teenuse on väga hästi , jälgides kõiki aine raames räägitud mustreid , ülesehitatud ja realiseeritud. Mõnes kohas oleks võinud olla rohkem kommentaare. Jälgitud on kõiki teenusele esitatud nõudeid , alates teenuse meetodite dokumenteerimisest kuni turvalisuse, sertifitseermise ja teenuse konfigureerimiseni välja.


Meeskonna X-Ladu retsensioon meeskonnale V(klientrakendus):

Meeskond V lõi kontaktiraamatu, mis põhines õppejõu „Telefoniraamatu teenus“ näidisteemal. Selle kontaktiraamatu klientrakendus on tehtud WPF baasil kasutades peamiselt MVVM (Model-View-ViewModel) lähenemist, mille puhul View kood on enamjaolt tühi. Teenuse kasutamisel igakordse parooli ja kasutajanime sisestamise vältimiseks on teenuse kanali loomine eraldi kapseldatud. Esmasel peale vaatamisega tekkis kohe üllatus, sest on aru saada, et tegemist on kogenud C# kirjutajaga. On kasutatud ka viise mida selle õppeaine raames pole põhjalikult läbitud.

Alguses on pandud „ServiceHost“ kasutama internetist kättesaadavatandmebaasi, kuid kui tahta see ära vahetada lokaalse vastu, tuleb muuta "ContactBookConnection" nimeline connectionstring. See on hea, sest esmakordsel kasutajal võib muidu tekkida mulje, et rakendus ei töötagi. Õpetus kuidas panna rakendus kasutama omaenda kohalikku andmebaasi on ilusti välja toodud ning kergesti konfigureeritav. Klientrakendus ise võimaldab kasutajaid tuvastada ja eristada ka erinevaid kasutajarolle, ehk siis erinevatele kasutajatele kuvatakse erinevad menüüd. Huvitav oli näha sellist lahendust, kus näiteks „otsi“ nupule ei pandud click eventi, vaid kasutati Command="{Binding SearchCommand}" varianti, kuna ise oma grupiga oleme selle aine raames kasutanud ainult click eventi. Kõik bindingud mis tehakse, viitavad kaustas „commands“ olevatele propertitele. Kogu ülesehitus võib tunduda mite nii kogenud C# kirjutajale alguses segane, kuid mõningase uurimise järel tundub loogiline ja mõistlik lähenemine.

Klientrakendus võimaldab Kasutajal kontake lisada ja redigeerida, nendele andmeid lisada ja muuta, pilte neile lisada nii otse arvutist kui ka veebilinki ette andes, otsida kontakte nime ja kontaktandmete sisu järgi, määrata kontakte avalikuks või mitte-avalikuks, adminidel lubab kasutajaid lisada ja redigeerida, määrata maksimaalset päringute arvu ning näha viimased 24h logi. Üldse on tehtud kokku 6 vaadet – login screen, main window, admin new user window, admin users, all contacts ja contacts edit.

Kogu projekti ning ka klientrakenduse kohta pole midagi halba öelda ja miiinuseid välja tuua, eriti kuna ei oska ise ka sellisel tasemel programmeerida. Kui retsensiooni eesmärk on midagi uut õppida, siis selle porjekti puhul on see eesmärk täidetud. Juurde sai teadmisi sellest, kuidas näiteks ei pea alati click eventi kasutama, milline on korralik projekti arhidektuur ning et isegi lihtne disain annab soovitud tulemuse. Lihtalt öeldes võttis sõnatuks.

Meeskonna AFFA II retsensioon meeskonnale V (teenus):

Meeskond V on loonud veebiteenuse, milleks on kontaktiraamatu WCF teenus.

Teenuse installeerimine ja käivitamine õnnestus vastavalt juhistele. Hõlbustamaks teenuse käivitamist ja ASP.NET-il põhinevat autentimist, oleks juhised võinud olla mõnevõrra detailsemad, kui viide videoloengule, kuid olles sama asja ka varem läbi teinud, ei osutunud ka käesolevate juhiste puhul teenuse käivitamine üle jõu käivaks.

Kogu teenuse andmekiht on ülesehitatud code-first põhimõttel, kasutades Entity Framework-i. See tähendab ka seda, et testandmed on puhtalt endal võimalik sisestada. Koodi poolest on tegemist igati eeskujuliku projektiga, mis on jagatud mitmesse kihti. Andmebaasi funktsionaalsuse kasutamise jaoks on loodud mudelid, mis on korralikult varustatud annotatsioonidega. Andmetele ligipääsu jaoks on tekitatud DAL kiht, mis kasutab repositooriume, mis võimaldavad vajadusel lihtsalt ka kasutatavat andmebaasi kas mõne teise andmebaasi või kasvõi veebiteenuse vastu välja vahetada. Lisaks on kasutusele võetud Unit Of Work konteiner ning kasutatakse inversion of control põhimõtet, kasutades selleks Ninject klassiteeki, mis võimaldab sõltuvusi süstida.

Kokkuvõttes võiks koodi poolt hinnata väga kõrgelt. Ka teenuse poole peal kasutatakse ilusti liideseid, mis on korralikult kommenteeritud. Lisaks on koodis erineva funktsionaalsuse osad viidud erinevatesse kataloogidesse või vastavad andmete päringuks loodud kihid viidud eraldi projektidesse, mis teeb potentsiaalselt projektiga ka hiljem liituvate uute arendajate jaoks koodi lugemise ja sellest arusaamise võimalikult lihtsaks.

Teenuse poolt on kasutajatele kättesaadav koguni 16 erinevat meetodit, millele lisandub administraatorile kättesaadavad 6 erinevat meetodit. Teades teenuse üldpõhimõtet ehk pakutavat funktsionaalsust, on meetodid ka igati piisaval määral ja hästi dokumenteeritud. Kasutajale antakse kogu elementaarne funktsionaalsus nii kontakte vaadata kui hallata. Üldiselt on juba meetodite nimed suhteliselt hästi valitud ja informatiivsed ning arusaadavad.

Parameetrite poole pealt võib tekkida esmapilgul natuke rohkem küsimusi ja ebaselgust, et mida ühele või teisele meetodile ette peab andma, aga juhul kui nt avataks teenus uute arendajate jaoks, kes saaksid teenusele oma klientrakendusi luua, ei ole ka siinkohal võimalik arvestatavaid etteheiteid teha, sest kõik on loogiline. Eriti kui uutele arendajatele anda ette näidis klientrakendus (nagu ka antud projekti puhul tegelikult täitsa olemas on), ei tohiks küll tekkida mingeid probleem täiendavate rakenduste loomiseks. Lisaks koodi kommenteerimisele on toodud ka lühijuhend, kus kõik kliendile ja administraatorile kättesaadavad meetodid ilusti kirjas on.

Kui vaadata, kas kontaktiraamat pakub ka funktsionaalsuse poole pealt piisavalt võimalusi. Nii on võimalik kontaktile lisada ka pilte, rääkimata tavapärastest redigeerimisvõimalustest.

Kõik teenuses kasutatavad meetodid annavad ka tagastusväärtuse ning nii on kasutajal ka näiteks kustutamiste puhul selge, kas operatsioon õnnestus või mitte.

Turvalisuse poole pealt peaks olema tegemist igati korrektse lahendusega, mis kasutab juba olemasolevat ning laialt kasutatavat ning testitud ASP.NET kasutajate autentimise teeki. Selle installeerimise pool on küll tavakasutajale hetkel mõneti ebamugav, sest tuleb täiendavalt registreerida ka vastavad sertifikaadid, kuid reaalses situatsioonis oleks kindlasti võimalik ka see tegevus nö installeerimise paketis ilusti automatiseerida ja kasutaja eest ära peita. Tulemuseks on aga igati turvaline lahendus.

Nõutud funktsionaalsuse poole pealt on täidetud ka logimise nõue. Väikse puudusena ei leidnud küll üles, kas ja kuidas antud logisid praeguse rakenduse puhul vaadata võiks, peale otse andmebaasist päringute tegemise.

Kokkuvõttes võib loodud veebiteenust hinnata suurepäraseks, sest koodi pool on igati eeskujulik, mis järgib kõiki aines käsitletud parimaid praktikaid ja mustreid. Samuti on ka funktsionaalsuse poole pealt teenus igati toimiv ja kliendisõbralik ning mis kindlasti ka oluline, samuti teenuse jaoks tulevikus potentsiaalselt uusi klientrakendusi loova arendajasõbralik.