Click here to load reader
View
247
Download
0
Embed Size (px)
Objektno orjentirano programiranje
Predavanje 10
Objekti u web servisima
Skriptni jezici temeljeni na objektima
Jezici poput Jave i .NET jezika spadaju u kategoriju objektno orijentiranih programskih jezika
C++ takoer ima mogunost koritenja objekata, ali nije nuno koristiti objekte (moemo napisati obini C program koristei C++ kompajler)
Postoji i klasa jezika koji se zovu skriptni jezici: JavaScript, VBScript, ASP, JSP, PHP, Perl i Python programski jezici koji mogu automatizirati i interpretirati izvravanje razliitih zadataka
Objekti i primjena u webu
Klijentska i serverska validacija
Web server Web server
1
3
2
1
2
Serverska validacija Klijentska validacija
Objekti i primjena u webu Pristupa bazama je dozvoljen samo podsredstvom servera zbog
sigurnosnih razloga
Server odluuje koje aktivnosti e dozvoliti, klijent ne moe direktno manipulirati osjetljivim podacima
S aspekta tonosti unesenih podataka potrebno je obaviti validaciju
Klijentska i serverska validacija
Kada radimo validaciju na klijentu manje podataka se treba slati na server to rezultira manjim prometom
Redundantna validacija validacija se obavlja na obje strane (i klijent i server)
Postoje naini da klijent zaobie validaciju i poalje podatke direktno na server
Objekti i primjena u webu
Za slanje podataka na server potrebno je vrijeme
Slanje podataka na server povea koliinu prometa
Slanje podataka na server zauzima serverske resurse
Slanje podataka na server moe potencijalno rezultirati pogrekom
Iz ovih razloga cilj je to vie validacije obaviti na klijentu
Tu do izraaja dolaze skriptni jezici
JavaScript validacija
JavaScript je object-based
Moemo koristiti objekte u JavaScript aplikacija da bi smo dodali vie mogunosti naoj web stranici
HTML je markup jezik koji ne prua inherentne programske mogunosti (npr. ne moemo programirati if uvjetni izraz ili napisati petlju
U ranim danima HTML-a nije bilo mogue obaviti validaciju na klijentskoj strani
Skriptni jezici su to promijenili
Koritenjem funkcionalnosti koje nam pruaju skriptni jezici web stranice mogu izvravati programsku logiku
Validacijski program
function validacijaBroja(tForm) {
if (tForm.result.value != 7 ) {
this.alert (nije 7!);
} else {
this.alert (Tono. Broj je 7);
}
}
Validate
JavaScript objekti
JavaScript objekti predstavljaju spreminke (eng. container) za imenovane vrijednosti (eng. named values)
var car = {type:"Fiat", model:500, color:"white"};
Metode objekata
Metode se spremljene u svojstva kao definicije funkcija
Property Property Value
firstName John
lastName Doe
age 50
eyeColor blue
fullName function() {return this.firstName + " " + this.lastName;}
JavaScript objekti
Pristupanje svojstvima objekata
objectName.propertyName
objectName[propertyName]
Pristupanje metodama objekata
objectName.methodName()
this pokaziva referira trenutni objekt
JavaScript ima i odreeni broj ugraenih tipova objekata, npr. Date
Svaka instanca objekta Date ima ugraene gotove metode kao getHours() ili getMinutes()
Objekti na web stranicama
Mnogi tipovi objekata mogu biti direktno ugraeni u HTML dokument
tag slui za ukljuivanje objekata
Ukljuivanje flashobjekta
Objekti na web stranicama
tag se moe koristiti za multimedije u web stranice (audio, video, Java applet, PDF, Flash)
tag se moe koristiti za prosljeivanje parametara plugin-ukoji je ugraen u object tag
Web servisi
Web servisi omoguavaju proces komunikacije izmeu klijenta i servera koritrenjem XML poruka i SOAP (Simple Object Access Protocol) standarda
SOAP je komunikacijski protokol za slanje poruka putem interneta
Neovisan je o platformama i jeziku i temeljen na XML-u
RPC (Remote Procedure Calls) su aktualni od poetka evolucije distribuiranih sustava
RPC su komunikacijski proces koji omoguava pozivanje servisa sa drugog raunala na mrei
Kada su sustavi u pravom smislu rijei objektno orijentirani RPC se moe zvati i RMI (Remote Method Invocation)
RPC
Sekvenca dogaaja tijekom RPC-a:
1. Klijent poziva klijent stub. Lokalni poziv procedure, parametri su stavljeni na stog
2. Stub pakira podatke u poruku i alje poruku marshaling
3. Klijentov lokalni OS alje poruku na server
4. Server stavlja poruku na server stub
5. Server stub odpakira poruku
6. Server stub poziva serversku proceduru sa tim podacima. Odgovor se alje klijentu na isti nain
SOAP
Poziv metode je jednostavan u smislu da developer ne mora znati da li se radi o lokalnom ili udaljenom (eng. remote) servisu
Primarna motivacija za SOAP je se mogu izvoditi pozivi procedura preko HTTP-a koritenjem XML-a
Ukratko SOAP je temeljen na XML-u i radi se o protokolu za distribuirane aplikacije
SOAP primjer
Zahtjev
POST /InStock HTTP/1.1Host: www.primjer.orgContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn
Tesla
SOAP primjer
Odgovor
HTTP/1.1 200 OKContent-Type: application/soap+xml; charset=utf-8Content-Length: nnn
100.4
REST
Representational State Transfer
REST je iroko rairen i smatra se jednostavnijom alternativom SOAP-u
Temelji se na HTTP protokolu
Radi se o stilu arhitekture umreenih aplikacija. Umjesto koritenja kompleksnih mehanizama koristi se jednostavni http za pozive meu raunalima
RESTful aplikacije koriste http zahtjeve za CRUD (create/read/update/delete) operacije
REST nije standard niti postoji W3C preporuka za REST
REST
S aspekta programiranja REST je jednostavnija alternative web servisima i RPC-u
REST je:
neovisan o platformi
neovisan o jeziku
mogue koristiti uz prisutnost firewall-a
Primjer
Koritenje web servisa i SOAP
Aplikacija telefonskog imenika gdje imamo ID korisnika
SOAP verzija
Sve se alje http POST zahtjevom serveru
Odgovor e biti XML file koji e biti ugraen u SOAP response envelope
24123
Primjer REST
Zahtjev izgleda ovako:
http://www.trazilica.com/imenik/PodaciOKorisniku/24123
URL se alje jednostavnim http GET zahtjevom
Povratna informacija su isti podaci, nisu ugraeni u neki format
Ovo je jednostavnija i neodreenija vrsta komunikacije
Kada koristimo SOAP moramo koristiti biblioteke za stvaranje zahtjeva i ona parsirati odgovor koji dobijemo
REST moemo testirati direktno kroz browser
http://www.trazilica.com/imenik/PodaciOKorisniku/24123
REST vs SOAP
Analogija sa pismom i razglednicom
SOAP koristimo kao pismo koje stavljamo u omotnicu
REST koristimo kao razglednicu bez omotaa
REST moe biti siguran kao i SOAP koristei https
Bez enkripcije oba protokola su nesigurna
Primjer koritenja vie parametara
http://www.trazilica.com/imenik/PodaciOKorisniku?ime=Ivan&prezime=Ivic
U slaju da elim poslati mnogo parametara ili binarne podatke koristimo POST zahtjeve
http://www.trazilica.com/imenik/PodaciOKorisniku?ime=Ivan&prezime=Ivic
REST
Nije nuno objektno orijentiran
moe kao odgovor vraati i XML ali to esto nije sluaj
Jedna od prednosti koritenja XML-a je sigurnost u odreivanju tipova podataka
Ne moramo koristiti dedicirane biblioteke ve u veina sluajeva moemo koristiti ugraene funkcionalnosti programskih jezika
Dio 2 - Debugging
Debugging proces identifikacije uzroka greke i ispravljanje pogreke
Na nekim projektima proces debagiranja uzima i do 50% ukupnog vremena razvoja
Za veinu programera debagiranje predstavlja najtei dio razvoja softvera
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. Brian W. Kernighan
Razlike u uinkovitosti uklanjanja pogreaka
Najbolji nain izbjegavanja pogreaka nije debagiranje ve kvalitetan razvoj softvera
Ne trebamo birati izmeu kvalitete, cijene i vremena oni idu zajedno
Izvor: Some psychological evidence on how people debug computer programs (Gould 1975)
Tri najbra programera Tri najsporija programera
Prosjeno vrijeme debagiranja (u
minutama) 5.0 14.1
Prosjeni broj nepronaenih
defekata 0.7 1.7
Prosjean broj defekata uvedenih
ispravljenjem drugih defekata 3.0 7.7
Defekti kao prilike
to znai imati defekt u programu?
ne razumijemo tono to program radi
Programiranje pokuaja i pogreke mijenjamo program dok ne dobijemo toan rezultat bez da u potpunosti razumijemo to se odvija u programu
Ovakav pristup e vrlo vjerojatno prouzroiti pogreke
Postoje dobre prakse za proces debagiranja:
Defekti kao prilike
Naui vie o programu na kojem radi bolje razumijevanje problema vodi lakem rjeavanju defekata
Naui vie o pogrekama koje radi u budunosti e bolje izbjegavati ili uoiti takve pogreke
Razmatraj kvalitetu koda s aspekta njegove itljivosti irazumljivosti
Analiziraj svoj metode popravljanja defekata obino se drimo ustaljenih mehanizama i prakse
Pogreni pristup debagiranju