1. client - win/web forms
2. web service
3. business logic
4. sloj za pristup bazi
5. baza podataka
Win klijent bi trebalo da radi glavne stvari oko biblioteke, unos autora, knjiga, clanova, izdavanje knjiga itd.
(Eventualno, kasnije bi se i za te poslove napravio web klijent.)
Osnovni web klijent bi imao mogucnost pregleda kataloga knjiga, po grupama, autorima, po čitanosti, kontrola da li je neka knjiga zauzeta (izdata) i sl. To bi omogucavalo članovima i javnosti uvid u fond biblioteke.
Oba klijenta bi komunicirali iskljucivo sa web servisom.
Oba klijenta, windows forms aplikacija, ili asp.net web aplikacija mogu se nalaziti na racunaru razlicitom od web servisa. Baza podataka takodje mogla bi imati svoj racunar.
Web service, business logic i sloj za pristup bazi podataka bi morali biti na jednom racunaru.
Sad, nekoliko stvari me muci.
Prvo, ima li smisla razdvajati web service, business logic i data access sloj zasebno, ako ih ne pravim tako da se mogu izvrsavati na razlicitim racunarima?
Drugo, u primjerima enterprise distribuiranih aplikacija, business logic je razdvojen na business facade i business rules. Jel' to nesto sto je neophodno ili se to sve moze staviti u jedan sloj? Ako odredjena akcija ne zahtijeva nikakvu posebnu kontrolu, recimo unos podataka o autorima, moze li web service ili business facade preskociti ovaj sloj i pozvati data access sloj direktno?
Treće, da li je uobicajeno da se pravi samo jedan web service, a ne vise koji bi u ovom slucaju opsluzivao sve zahtjeve, ili se moze praviti i vise sa razlicitim namjenama?
Četvrto, gdje da stavim security sloj? Kontrola prava za radnike u biblioteci, kontrola za administratora aplikacije, eventualno kontrola pristupa članova putem web klijenta (ako bih im dopustio, npr. rezervisanje i slicne stvari) zahtijevaju da ih autoriziram te da negdje, neki od ovih slojeva odlucuje da li im ispuniti zahtjev ili ne. Da li je web service pogodan za to, ili da to prepustim nekom sloju ispod? Kako izvesti autorizaciju, da li pri svakom pozivu web servisa da saljem username/password (sto mi izgleda najjednostavnije za sada)?
Ima ovdje gomila pitanja, valjda cemo uspjeti naci nekakva rjesenja. A pitacu ja jos.
