Käesolev veebirakendus on asendamatu abimees arvuti kokkupanekul (võrdlemisi tugevalt inspireeritud https://pcpartpicker.com).
Kuna teatavasti vajab arvuti töötamiseks kindlaid juppe mingis aktsepteeritud konfiguratsioonis, võimaldab meie rakendus välistada mitteühilduva raudvara "jõuga" ühildamist ja abistab kasutajal optimaalse konfiguratsiooni valimist.
Põhiline funktsionaalsus
Kasutaja saab lisada üks kuni mitu arvutiskeemi
Skeemile saab hakata ükshaaval lisama juppe (emaplaat, protsessor, mälud jne)
Iga kord kui mingi jupp skeemi lisatakse, kitsendab see ülejäänud juppide valikut - näiteks LGA1151 liidesega emaplaadile ei õnnestu lisada AMD protsessorit jne
Nii pooleliolevaid kui valminud skeeme saab salvestada
Igal jupil on oma vaade koos tehnilise infoga
Nice to have
Parima hinna kuvamine (nt Amazon, Newegg)
Komponentide võrdlus
Ülesanne 1: XML
Teema
Uute arvutikomponentide olemasolevatesse kategooriatesse lisamiseks kasutab administraator ankeeti, mille salvestamisel ja andmete serverisse edastamiseks tekitatakse järgmine XML, kus on võimalik korraga suur hulk erinevaid arvutikomponente lisada, aga võib ka ainult ühe komponendi korraga saata.
Kasutusjuhend: Kui retsenseerija on antud õppeaine edukalt läbinud, tunneb ta API vaikimisi seadistatud endpointe ja routingut piisavalt, et osata meie teenust kasutada.
Analüüs
Vastavalt klientrakenduse päringule annab veebirakendus andmebaasis oleva informatsiooni põhjal JSON kujul vastuse kliendile. Klientrakenduse funktsionaalsus ja andmebaasi skeem on mõlemad kirjeldatud allpool. Veebirakendus suudab anda komponentide kategooriate nimekirja, ühe kategooria komponentide nimekirja, nime järgi otsingu tulemuste nimekirja, konkreetse komponendi detailse informatsiooni, jpm.
Mõisted
CPU - Keskseade, ühest või mitmest protsessorist ja nende sisemäludest koosnev funktsionaalüksus, nii eesti kui inglise keeles kasutusel sünonüümina sõna protsessor;
GPU - Graafikaseade, spetsiaalselt graafikatöötlusele orienteeritud protsessorid ja ( diskreetse puhul) mälu, integreeritud graafikaseaded kasutavad arvutisüsteemi muutmälu;
RAM - Mälu kus hoitakse käimas-olevate programmide andmeid;
Emaplaat - Kiibistik, mis ühendab ülejäänud arvutikomponendid omavahel kokku;
PSU - Toiteblokk, võtab vooluvõrgust tuleva voolu ja muundab selle arvutikomponentidele sobivaks;
Korpus - Erinevad “kastid”, mis on loodud tervikliku arvutisüsteemi komponentide tarbeks.
ROM - Arvuti püsimälu, tänapäeval jaguneb laias laastus SSD (kallis maht, kiire) ja HDD (odav maht, aeglane) variantideks.
Rakenduse kirjeldus (kogu süsteem, teenus+klient)
Lühidalt:
Meil on lauaarvutite komplekteerimise infosüsteem. Meie klientideks on inimesed kes kaaluvad lauaarvuti ostmist ja kes soovivad enne lauaarvuti või selle komponentide ostmist enda jaoks kogu protseduuri põhjalikult läbi mõelda. Süsteem võimaldab klientidel luua virtuaalse lauaarvuti ja tuvastab mitteühilduvad komponendid ning aitab seega vältida erinevaid probleeme, millega kaasneks aja- ja rahakulu.
Nüansid ja programselt lahendatavad probleemid:
Kliendid saavad ennast meie süsteemis registreerida kasutajateks. Üks füüsiline isik võib teha endale teha ükskõik kui palju kasutajaid, meil ei pea olema päriselt olemasoleva isiku ja süsteemi kasutaja vahel üks-ühest seost. Rakenduse kasutamiseks ei ole kohustuslik serveris konto loomine, klient saab virtuaalse arvuti luua ilma kasutajakontota, aga see ei säilu pärast sessiooni lõppemist.
Iga kasutaja võib luua uue virtuaalse lauaarvuti, sellele nimetuse panna ja see seotakse automaatselt tema kasutajakontoga. Igale virtuaalsele arvutile võib lisada komponente. Lauaarvuti põhilisteks komponentideks on keskseade/protsessor (CPU), protsessori jahuti, emaplaat, muutmälu, graafikaseade (GPU), toiteblokk, arvuti korpus ja püsimälu.
Iga protsessori generatsioon on ühilduv ainult kindlate emaplaadi kiipseadmete komplektidega (chipset) ja tüüpiliselt on emaplaadi protsessori pesa (socket) see, millest lähtuda emaplaadi ja protsessori ühilduvuse kindlaks tegemisel. Protsessori pesaga ühilduvus on peamine parameeter ka protsessori jahuti valikul, aga kui emaplaadil on ainult ühte tüüpi pesa ja protsessor sobib ainult ühte kindlasse pessa, siis jahutid on üldjuhul sobivad mitmete erinevate pesadega. Samuti ühilduvad iga protsessor ja emaplaat ainult spetsiifiliste muutmälu generatsioonidega. Emaplaadid toetavad muutmälu kindla taktsageduseni, kiirema taktsagedusega mälukiipe saab siiski kasutada, need töötavad lihtsalt emaplaadi poolt lubatud maksimaale taktsagedusega, mitte muutmälu kiibi maksimaalse taktsagedusega. On olemas emaplaate, mis toetavat mitut protsessorit.
Muutmälu võib olla lauaarvutis üks kiip, aga võib ka rohkem. Mitme kiibi korral peaks need olema identsed või identsete näitajatega.
Osade protsessoritega on jahuti karbis kaasas, teistel ei ole. Tänapäeva lauaarvutite protsessorid ilma jahutita ei ole töövõimelised. Mõned protsessorid ja emaplaadid sisaldavad graafikaseadet. Diskreetne graafikaseade on üldjuhul võimekam protsessori või emaplaadiga kaasasolevast, seega on tavaline, et arvutile lisatakse diskreetne graafikaseade isegi kui sisene graafikaseade on juba olemas.
Emaplaatidel, toiteblokkidel ja arvuti korpustel on mitmed suuruse standardid. Suured (ATX) emaplaadid ja toiteblokid ei mahu väikesesse (microATX) korpusesse. Mõned korpused toetavad väikest emaplaati, samas suurt toiteblokki ja teoreetiliselt on võimalik ka vastupidine olukord.
Arvuti korpus toetab protsessori jahutust ainult kuni teatava jahuti kõrguseni ja diskreetse graafikaseadme puhul ainult teatud seadme pikkuseni. Mõned korpused sisaldavad toiteblokki.
Erinevatel diskreetsetel graafikaseadmetel on erinevad nõuded toitele, osad saavad oma toite ainult emaplaadi liidese kaudu, teistel on vaja ühte või rohkemat kaablit toiteblokist. Graafikaseadmeid võib lauaarvutis olla mitmeid, ka mitu ühesugust.
Toitebloki puhul peab toitebloki võimsus katma kõigi teiste komponentide vajaduse varuga ja diskreetse graafikaseadme korral peab toiteblokil olema selle toiteks piisavalt õigeid kaableid.
Projekti struktuur
Rakendus koosneb kahest põhilisest osast: veebiteenus ja klient-rakendus, mis seda teenust kasutab.
Projekt realiseeritakse kasutades ASP.NET MVC Web API tehnoloogiat, mis võimaldab teha kliendi poolelt vastu serverit asünkroonseid http päringuid (GET, POST, PUT, DELETE) ja mis tagastab andmekogumina JSON'i. See on mugav ja kaasaegne lahendus, kuna töötab ühtemoodi erinevate klientrakendustega (mobiilseadmed, veeb jne).
Esialgne rakenduse ülesehituse skeem:
Klientrakenduse funktsionaalsus
Klientprogramm võimaldab kasutajal hallata oma kasutajaprofiili, lisada, muuta ja vaadata oma virtuaalseid arvuteid ja nende komponente.
Veebiklient suhtleb serveriga üle API.
Sisselogimisel küsitakse kasutajalt kasutajanime ja parooli, seejärel üritab rakendus kasutajat autentida.
Eduka autentimise korral kuvatakse antud kasutaja töölaud ning sünkroniseeritakse andmed serveriga.
Klientrakenduse must-have funktsionaalsus
Üldine
Rakendus peab töötama online režiimis;
Kasutajate haldus
Peab olema võimalik kasutajaks registreerida (kasutajakonto olemasolu on vajalik andmete talletamiseks);
Kasutaja peab saama sisse logida kasutajanime ja parooliga;
Paroolile peavad rakenduma keerukusnõuded (nt 8 tähemärki);
Kasutajatel peavad olema erinevad õiguste tasemed (minimaalselt tavakasutaja ja administraator);
Tavakasutaja saab hallata ainult iseenda virtuaalseid arvuteid;
Adminkasutaja saab lisada või muuta saadaolevaid komponente;
Virtuaalsete arvutite haldus
Kasutaja peab saama lisada uusi virtuaalseid arvuteid;
Kasutaja poolt lisatud arvutid peavad talle näha olema;
Kasutaja peab saama oma arvutitele komponente lisada ja vahetada:
Komponendid on jagatud erinevatesse kategooriatesse:
keskseade/protsessor (CPU)
protsessori jahuti
emaplaat
muutmälu
graafikaseade (GPU)
toiteblokk
arvuti korpus
püsimälu
Ühest kategooriast on võimalik valida ka mitu komponenti (nt mitu graafikaseadet)
Kui kasutaja valib mõne komponendi, siis see piirab automaatselt tema võimalusi valida ainult juba valitud komponentidega kokkusobivaid teisi komponente.
Kui juba valitud komponent muutub mitte kokku sobivaks, siis antakse sellest kasutajale teada
Mitte kokkusobivate komponentidega arvutit salvestada ei ole võimalik
Komponente on võimalik nende omaduste põhjal sorteerida ja filtreerida
Komponentide haldus
Komponent peab olema lisatav administraator kasutaja (kuid mitte tavakasutaja) poolt
Juba loodud ja kinnitatud komponendi omadusi muuta ei saa
Komponendi saab märkida eemaldatuks:
Eemaldatud komponente uute arvutite komplekteerimisel ei kuvata
Eemaldatud komponentidega juba komplekteeritud arvutite puhul kuvatakse kasutajale, et komponent pole enam saadaval
Komponendile saab lisada tingimusi:
Tingimused määravad milliste komponentidega antud komponent koos on võimeline töötama
Tingimuseks võib olla ka loodava virtuaalse arvuti mingi parameeter (nt voolutarve)
Klientrakenduse nice-to-have funktsionaalsus:
Oma komplekteeritud arvuti jagamine
Komponentide sorteerimine vastavalt populaarsusele (st kasutamine arvutites)
Kasutaja parooli nullimine e-maili kinnituse kaudu
Kasutajakonto kustutamine
Kasutajakonto andmete muutmine ja lisainfo talletamise võimalus
Serveri funktsionaalsus
Serveri must-have funktsionaalsus
Server peab toetama kõiki klientrakenduse must-have nõudeid.
Serveris tuleb logida olulisemaid kasutajate poolt klientrakenduses tehtud toiminguid (sisse logimine, konto lukustumine, virtuaalse arvuti lisamine jne.);
Kasutaja blokeerimine (ajutine), kui kasutaja on ennast püüdnud autentida vale parooliga enam kui 8 korda.
Serveri nice-to-have funktsionaalsus
Kasutaja poolt sisestatud e-maili kinnitamine (kinnitava e-maili saatmine) kasutaja loomisel.
Andmebaasi skeem
Andmebaasi skeem ei sisalda kasutajate haldust.
Ülesanne 3: Klientrakendus
(b)logi
12/06/2017: Lisatud link lõpptootele (ainult teenus, ilma kliendita)
04/05/2017: Andmebaasi täiendused
17/04/2017: Analüüsi lisatud klientrakenduse ja serveri kirjeldused, samuti kirjeldatud projekti üldine struktuur