Talk:V

From EIK wiki

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, mille hulka kuulub andmekiht, andmetele ligipääsukiht, teenuse teek ning teenuse host.

Andmebaasi funktsionaalsuse kasutamise jaoks on loodud mudelid, mis on korralikult varustatud annotatsioonidega. Eraldi võiks esile tõsta, et loodud on ka nö baasmudel, millest kõik ülejäänud mudelid pärivad andmete loomise, muutmise ja kustutamise väljad. Selgelt on näha, et sellise ülesehituse joaks on täiendavat vaeva nähtud. 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. Kogu teenuse funktsionaalsus on ilusti ühendatud ühte teeki (library) ja teenuse host on pandud eraldi projekti.

Kokkuvõttes võiks koodi poolt hinnata väga kõrgelt. Ka teenuse poole peal kasutatakse ilusti liideseid, mis on korralikult kommenteeritud. Lisaks on koodi muule liigendamisele, on ka teekides 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. Kindlasti võib ka esile tõsta erinevaid võimalusi kontaktide otsimiseks erinevate kriteeriumite järgi. 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 esmapilgul üles, kas ja kuidas antud logisid praeguse rakenduse puhul vaadata võiks, peale otse andmebaasist päringute tegemise, kuid tegelikult on ka see funktsionaalsus rakendatud ning vajab vaid administraatorina sisselogimist.

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 arendaja jaoks lihtsalt kasutusele võetav.

Retsensioon Tiim V-le KK without K poolt Teenuse ja Klientrakenduse kohta 08.06.2013

Tiim V lõi teenuse, mis suhtleb andmebaasiga mis hoiustab kontaktandmeid. Teenus on loodud kaasutadaes Wcf tehnoloogiat. Teenus koosneb järgnevatest kihtidest: Mudelid(Models), Ligipääsukiht(DAL),teenuse libraryist(ServiceLibrary)ning samuti teenuse hostist(SeviceHost). Mudelid Mudelites on märgitud väljade pikkused ning samuti märgitud DataContractid oleks võimalik luua klientrakenduse poolne ligipääs. Selgelt on näha et on kasutatud code first lähenemist kuna on ilmselgelt olemas mudelite classlibrary ning selles kasutatud Entity Frameworki. Mudelites on selgelt väljendatud olemite vahelised seosed ning samuti oli kasutatud lazy loading-ut , mis tagab andmebaasile väiksema töökoormuse. Otseselt mudelites ühtegi viga silma ei torganud. Ligipääsukiht Teenuse DAL oli lisatud repositooriumid ja need koondatud ühise Unit of Work alla. Repositooriumiesse oli lisatud custom meetodeid andmete töötlemiseks, mis inimesele kes projekti ei tunne võivad olla veidi keerulised, kuid samas mitte midagi hullu; oleks võinud olla rohkem kommenteeritud. Muidu olid repod ülesehitatud autogenereeritud baseRepository peale. Igale repo kohta leidus ka vastava repo liides (interface). Nii liidesed , repod kui ka context olid paigutatud eraldi , et muuta projekti veelgi hallatavamaks. Teenuse library Teenuse library- s oli kasutatud sõltuvsute söstimist (Dependency Insection ehk DI), seda sai aru ninjecti kasutamisest. DI bindimis osas oli on näha, et süstitakse UoW vastu. Varasemas projekti faasis oli tõenäoliselt söstitud otse reposid, kuna nende kirjeldused on kommenteeritud kujul senini olemas.Rollide kasutajate halduseks kasutatakse .Net raamistiku Role- ja MembershipProvider-eid, mis on hallatavuse mõtes plussiks. Segatuste ära hoidmiseks on jagatud meetodid regioonideks (segadus user ja admin meetodite vahel). Samuti on põhjalikult dokumenteeritud meetodeid, mis on samuti suureks boonuseks hallatavuse suhtes. Teenuse host Hostina töötab WCF application, kus on reference teenuse library-le. Teenuse Web.config failisis on märgitud kõig vajalikud endpointid, kasutaja autenimine ning loomulikult andmebaasi ühendus. Host paneb kogu eelnevale punkti ning näitavad loojate asjakohast taset antud teema suhtes.

Teenuses oli kasutatud aines õpitud viise projekti läbi viimiseks nagu repositooriumid ja unit of work. Kohati oleks võinud leiduda rohkem kommentaare , kuid üle üldiselt oli tegemist igati viisaka tööga.

Klientrakendus

Tiim V rakenduse baasiks oli õpejõu poolt antud näidis teema nimelt „Telefoniraamatu teenus. Rakendus teenusele loodi WPF peale asutades MVVM (Model-View-ViewModel) metoodikat. Ilmselgelt oli koodile peale vaadates võib väita, et on tegemist kogenud C# kirjutajaga. ServiceHost on defaultis ühendatud internetis asetseva andmebaasiga ning seega lookalses võrgus kasutamiseks tuleb muuta connectionstringi „ContactBookConnection“, kui seda poleks välja toodud oleks võinud olla raskusi antud rakenduse veavabaks tööks. Rakedus eristab erinevaid kasutajaid niing nende rolle mille alusel neile kuvatakse erinevaid elemntet ja ressursse. Amuti oli XAMLis binditud teisiti kui tavaliselt, selle asemel, et kasutada On_Click event oli hoopis selline koodi tükk Command="{Binding *****Command}(***** meetodi nime esimene pool), mis tundus alguses suhteliselt segane aga hiljem on arusaadav, et on tegelikult DelegateCommand tüüpi objektidega mis on kirjeldatud vastava Viewmodeli sees. DelagateCommand asetseb Commands kaustas. Alati uute lähenemiste tutvumine avardab silmaringi ning pakub uusi võimalusi probleemide lahendamiseks. Rakendus võimaldab halllata kontakte- lisada ja muuta vastavalt vajaldusele, samuti võimaldas rakendus konaktile lisada profiili pildi nii kohalikust masinast kui ka URL-i alusel, samuti oli võimaldatud kontaktide seas otsimine, ning võime muuta kontaktide nähtavust. Adminid said ainult kasutajaid lisada ja muuta. Rakendus pidas ka logi viimaste 24h kohta ja piiras ka päringute arvu. Seda projekti retsenseerides leidsime palju huvitavat mida endale kõrva taha panna, ja ilmselgelt pole midagi halba öelda sellise hästi valmistatud projekti kohta.