際際滷

際際滷Share a Scribd company logo
Napredne  tehnike razvoja web aplikacija,   Zend Framework Sa邸a Stamenkovi Senior Software Developer Troxo   Open IT Elektronski fakultet Ni邸
Koji se problemi javljaju u web aplikacijama? Me邸anje biznis i prezentacione logike Copy-paste kod Nepostojanje strogih konvencija Nestandardno rutiranje Lo邸e rukovanje gre邸kama Sigurnosni propusti ...
Neke web aplikacije izgledaju ovako
A njihovo odr転avanje ovako
Me邸anje biznis i prezentacione logike
Me邸anje biznis i prezentacione logike Sigurnosni propusti Kod nije  reusabilan Eventualne gre邸ke nisu  hendlovane Konfiguracija nije centralizovana Odr転avanje ovakvog koda je ote転ano
Nestandardno rutiranje
Nestandardno rutiranje Svaki programer ga re邸ava na svoj nain Svaka nova aplikacija zahteva ponovni prolazak kroz fazu re邸avanja ovog problema Poveano vreme razvoja aplikacije Ote転ano odr転avanje i razumevanje koda od strane lanova razvojnog tima
Sigurnost (security) web aplikacija SQL injection Cross-site scripting (XSS) Cross-site request forgery (CSRF)
Aplikacije su kao luk  imaju slojeve
ta je to MVC? ModelViewController  ( MVC ) je arhitekturni obrazac koji se koristi u softverskom in転injerstvu. Ovaj obrazac razdvaja podatke (model), korisniki interfejs (view), i obradu (controll), dozvoljavajui tako nezavisni razvoj, testiranje i odr転avanje ovih komponenti.
ta je to MVC?
ta je to MVC?
Model Je nain predstavljanja podataka koje data aplikacija koristi. Sama logika aplikacije daje neko znaenje sirovim podatcima, npr. izraunavajui da li je danas korisnikov rodjendan.
View Predstavlja model u odredjenoj formi, naje邸e kroz korisniki interfejs. Mogue je postojanje vi邸e pogleda za jedan isti model.
Controller Prihvata informacije sa ulaza, poziva modele objekata i vraa rezultat. MVC aplikacija mo転e imati vi邸e model/view/controller trija, gde e svaki biti zadu転en za odredjeni U/I.
MVC
Malo istorije MVC je 1979 godine prvi put opisao Trygve Reenskaug, koji je u tom momentu radio na Smalltalk-u. Prvobitna implementacija je detaljno opisana u radu : " Applications Programming in Smalltalk-80: How to use ModelViewController  Iako postoje vi邸e varijacija naziva, kao na primer Model View Presenter kod .NET Framework-a, svi oni imaju isti redosled operacija.
To nije sve Navigacija Two step view Autentifikacija i autorizacija Validatori i filteri Web servisi ORM Ajax i DOM Internacionalizacija Scaffold
To nije sve Unit testovi Sigurnost (XSS, CSRF , SQL Injection..) Ke邸iranje SEO ...
Neki od MVC frameworaka Zend Framework Ruby on Rails Play!  Django  ASP. net  MVC Framework
Zend Framework Open source  framework  za PHP. Nastao oktobra 2005. Use-at-will framework (veoma fleksibilan). Podr転ava vi邸e DBMS-a : MySQL, Oracl, SQL Server, IBM DB2, SQL Lite.. Sve komponente su u potpunosti objektno-orientisani PHP 5. http://framework.zend.com/
Ruby on Rails Open source  framework  za jezik Ruby. Nastao Jula 2004. Moan scaffolding mehanizam (rake) za automatsko kreiranje modela, pogleda, testova, baze... Mo転e da se izvr邸ava na raznim serverima, pr. Mongrel, Lighttpd,  Abyss, Apache, Passenger. Implementira  Convention over Configuration, i  Don't repeat yourself. http://rubyonrails.org/
Play! Znaajno olak邸ava razvoj web aplikacija u Javi. Dostupne sve standardne Java biblioteke (integracija sa Hibernate, OpenID, Memcached...). Direktno kompajlira kod i uitava ga na JVM, bez potrebe za restartovanjem servera. Koristi Groovy template engine (nasleivanje,  include , tagovi...). Pri pojavi gre邸ke u kodu, brzo pronalazi tanu liniju, ak i u templejtima. http://www.playframework.org/
Django Nastao 2005. Nazvan po jazz gitaristi Django Reinhardt. Primarni cilj je olak邸ano kreiranje kompleksih web aplikacija, principom ponovne upotrebe komponenti. Framework  sadr転i i server za razvoj i testiranje. ORM, admin interfejs, django templejti, ke邸iranje, internacionalizacija... http://www.djangoproject.com/
ASP. net  MVC Microsoft -ov  framework  za ASP.net, prva puna verzija iza邸la poetkom 2009. Omoguava testiranje pojedinanih komponenti  testabilan kod. Podr転ava sve metode standardnog ASP.net-a, ali sadr転i mnogo manje apstrakcija u odnosu na klasino web form okru転enje. Intuitivni URL-ovi, MVC, validacija, rutiranje, navigacija, ke邸iranje... www. asp . net / mvc /
Pregled
Pregled
Zend Framework
ta je unutra?
Zend MVC Model  model podataka koje koristimo u aplikaciji (sloj podataka) Baza Web servisi Feed -ovi ... View  ono 邸to prikazujemo korisniku (prezentacioni sloj) Controller  upravlja zahtevima I odluuje o tome 邸ta se de邸ava (sloj logike)
Zend MVC - interakcija Controller  view Controller  model View  model  View  mo転e da zatra転i podatke od modela, ali ne i da upisuje podatke.
Zend MVC
Zend MVC
Zend MVC  Front Controller Rukuje svim zahtevima Dlegira ih ka Action Controller-ima Vraa  Response
Zend MVC  Zend_Controller Request  sadr転i sve informacija o zahtevu Router  parsira zahtev na tokene koji predstavljaju modul, controler, akciju, parametre... Dispatcher  mapira tokene sa odgovarajuim klasama i metodama i inicira njihovo izvr邸enje Response  sadr転i odgovor i mogunost  njegovog slanja klijentu
Zend MVC dijagram
Zend MVC  rutiranje Podrazumevano  rutiranje /controller/action /controller/action/key1/value1/key2/value2 /module/controller/action /module/controller/action/key1/value1/...
Zend MVC  Zend_Controller_Action Klase koje nasleuju Zend_Controller_Action Defini邸u javne metode za svaku akciju Mogu implementirati neke od event-a: init(), preDispatch(), postDispatch()... Mogu koristiti korisne nasleene metode: _forward(), _redirect(), __call().. Mogue je implementirati plaginove I helpere za njih
Zend MVC  Zend_View Implementacija Zend_View_Interface omoguava kreiranje sopstevnog  template engine -a Defaultna  implementacija (Zend_View) koristi PHP kao  template engine Dodeljuje i uzima vrednosti promenljivih kao atribute objekata $view->var = 'some value' Mogue je kori邸enje postojeih i implementacija novih filtera i helpera
Zend MVC  Zend_Model ta je model? Baza podataka Web servis Feed Konfiguracioni fajl Fajl sistem Slike ...
Zend MVC  Zend_Model Jo邸 uvek ne postoji generalna komponenta pod ovim nazivom, ali je podr転ana sledeim: Zend_Db_Table Zend_Service Zend_Soap Zend_XmlRpc Zend_Feed Zend_Config ...
Zend_Form Objektna reprezentacije web (HTML) formi. Omoguava kreiranje standardnih kontrola kori邸enjem elemenata (Zend_Form_Element). Podr邸ka za validaciju i filtriranje ulaznih podataka. Prilagoavanje dizajna kori邸enjem dekoratora (Zend_Form_Decorator), grupa (Zend_Form_DisplayGroup) i subformi (Zend_Form_SubForm).
Prednosti MVC-a Razdvaja kod u celine prema njihovoj odgovornosti Biznis logika Prezentaciona logika Rutiranje Predvidiva lokacija koda na serveru Obino koristi OOP  olak邸ano testiranje I odr転avanje na du転e staze
Zend MVC  Sve zajedno
ta smo nauili? Uoili smo probleme koji se javljaju u razvoju web aplikacija. Upoznali smo se sa MVC-om I naveli neke konkretne implementacije. Nauili smo 邸ta jo邸 korisno nude web  freamework  implementacije. Detaljnije smo se upoznali sa Zend Framework-om i njegovom MVC implementacijom.
Demonstracija Kreirati hello world aplikaciju kori邸enjem Zend Tool-a. Zatim kreirati novu akciju i novi kontroler. Dodati  layout  (two-step view pattern). Dodati model. Povezati se na MySQL bazu. Proitati podatke iz baze. Dodati formu, pokazati validatore I filtere. Validirati podatke i upisati ih u bazu.
Linkovi http://www.slideshare.net/umpirsky/napredne-tehnike-razvoja-web-aplikacija-zend-framework http://code.google.com/p/librarydemo/ [email_address] http://twitter.com/umpirsky Kontakt
Pitanja i odgovori
Hvala na pa転nji

More Related Content

Napredne tehnike razvoja web aplikacija - Zend Framework

  • 1. Napredne tehnike razvoja web aplikacija, Zend Framework Sa邸a Stamenkovi Senior Software Developer Troxo Open IT Elektronski fakultet Ni邸
  • 2. Koji se problemi javljaju u web aplikacijama? Me邸anje biznis i prezentacione logike Copy-paste kod Nepostojanje strogih konvencija Nestandardno rutiranje Lo邸e rukovanje gre邸kama Sigurnosni propusti ...
  • 3. Neke web aplikacije izgledaju ovako
  • 5. Me邸anje biznis i prezentacione logike
  • 6. Me邸anje biznis i prezentacione logike Sigurnosni propusti Kod nije reusabilan Eventualne gre邸ke nisu hendlovane Konfiguracija nije centralizovana Odr転avanje ovakvog koda je ote転ano
  • 8. Nestandardno rutiranje Svaki programer ga re邸ava na svoj nain Svaka nova aplikacija zahteva ponovni prolazak kroz fazu re邸avanja ovog problema Poveano vreme razvoja aplikacije Ote転ano odr転avanje i razumevanje koda od strane lanova razvojnog tima
  • 9. Sigurnost (security) web aplikacija SQL injection Cross-site scripting (XSS) Cross-site request forgery (CSRF)
  • 10. Aplikacije su kao luk imaju slojeve
  • 11. ta je to MVC? ModelViewController ( MVC ) je arhitekturni obrazac koji se koristi u softverskom in転injerstvu. Ovaj obrazac razdvaja podatke (model), korisniki interfejs (view), i obradu (controll), dozvoljavajui tako nezavisni razvoj, testiranje i odr転avanje ovih komponenti.
  • 12. ta je to MVC?
  • 13. ta je to MVC?
  • 14. Model Je nain predstavljanja podataka koje data aplikacija koristi. Sama logika aplikacije daje neko znaenje sirovim podatcima, npr. izraunavajui da li je danas korisnikov rodjendan.
  • 15. View Predstavlja model u odredjenoj formi, naje邸e kroz korisniki interfejs. Mogue je postojanje vi邸e pogleda za jedan isti model.
  • 16. Controller Prihvata informacije sa ulaza, poziva modele objekata i vraa rezultat. MVC aplikacija mo転e imati vi邸e model/view/controller trija, gde e svaki biti zadu転en za odredjeni U/I.
  • 17. MVC
  • 18. Malo istorije MVC je 1979 godine prvi put opisao Trygve Reenskaug, koji je u tom momentu radio na Smalltalk-u. Prvobitna implementacija je detaljno opisana u radu : " Applications Programming in Smalltalk-80: How to use ModelViewController Iako postoje vi邸e varijacija naziva, kao na primer Model View Presenter kod .NET Framework-a, svi oni imaju isti redosled operacija.
  • 19. To nije sve Navigacija Two step view Autentifikacija i autorizacija Validatori i filteri Web servisi ORM Ajax i DOM Internacionalizacija Scaffold
  • 20. To nije sve Unit testovi Sigurnost (XSS, CSRF , SQL Injection..) Ke邸iranje SEO ...
  • 21. Neki od MVC frameworaka Zend Framework Ruby on Rails Play! Django ASP. net MVC Framework
  • 22. Zend Framework Open source framework za PHP. Nastao oktobra 2005. Use-at-will framework (veoma fleksibilan). Podr転ava vi邸e DBMS-a : MySQL, Oracl, SQL Server, IBM DB2, SQL Lite.. Sve komponente su u potpunosti objektno-orientisani PHP 5. http://framework.zend.com/
  • 23. Ruby on Rails Open source framework za jezik Ruby. Nastao Jula 2004. Moan scaffolding mehanizam (rake) za automatsko kreiranje modela, pogleda, testova, baze... Mo転e da se izvr邸ava na raznim serverima, pr. Mongrel, Lighttpd, Abyss, Apache, Passenger. Implementira Convention over Configuration, i Don't repeat yourself. http://rubyonrails.org/
  • 24. Play! Znaajno olak邸ava razvoj web aplikacija u Javi. Dostupne sve standardne Java biblioteke (integracija sa Hibernate, OpenID, Memcached...). Direktno kompajlira kod i uitava ga na JVM, bez potrebe za restartovanjem servera. Koristi Groovy template engine (nasleivanje, include , tagovi...). Pri pojavi gre邸ke u kodu, brzo pronalazi tanu liniju, ak i u templejtima. http://www.playframework.org/
  • 25. Django Nastao 2005. Nazvan po jazz gitaristi Django Reinhardt. Primarni cilj je olak邸ano kreiranje kompleksih web aplikacija, principom ponovne upotrebe komponenti. Framework sadr転i i server za razvoj i testiranje. ORM, admin interfejs, django templejti, ke邸iranje, internacionalizacija... http://www.djangoproject.com/
  • 26. ASP. net MVC Microsoft -ov framework za ASP.net, prva puna verzija iza邸la poetkom 2009. Omoguava testiranje pojedinanih komponenti testabilan kod. Podr転ava sve metode standardnog ASP.net-a, ali sadr転i mnogo manje apstrakcija u odnosu na klasino web form okru転enje. Intuitivni URL-ovi, MVC, validacija, rutiranje, navigacija, ke邸iranje... www. asp . net / mvc /
  • 31. Zend MVC Model model podataka koje koristimo u aplikaciji (sloj podataka) Baza Web servisi Feed -ovi ... View ono 邸to prikazujemo korisniku (prezentacioni sloj) Controller upravlja zahtevima I odluuje o tome 邸ta se de邸ava (sloj logike)
  • 32. Zend MVC - interakcija Controller view Controller model View model View mo転e da zatra転i podatke od modela, ali ne i da upisuje podatke.
  • 35. Zend MVC Front Controller Rukuje svim zahtevima Dlegira ih ka Action Controller-ima Vraa Response
  • 36. Zend MVC Zend_Controller Request sadr転i sve informacija o zahtevu Router parsira zahtev na tokene koji predstavljaju modul, controler, akciju, parametre... Dispatcher mapira tokene sa odgovarajuim klasama i metodama i inicira njihovo izvr邸enje Response sadr転i odgovor i mogunost njegovog slanja klijentu
  • 38. Zend MVC rutiranje Podrazumevano rutiranje /controller/action /controller/action/key1/value1/key2/value2 /module/controller/action /module/controller/action/key1/value1/...
  • 39. Zend MVC Zend_Controller_Action Klase koje nasleuju Zend_Controller_Action Defini邸u javne metode za svaku akciju Mogu implementirati neke od event-a: init(), preDispatch(), postDispatch()... Mogu koristiti korisne nasleene metode: _forward(), _redirect(), __call().. Mogue je implementirati plaginove I helpere za njih
  • 40. Zend MVC Zend_View Implementacija Zend_View_Interface omoguava kreiranje sopstevnog template engine -a Defaultna implementacija (Zend_View) koristi PHP kao template engine Dodeljuje i uzima vrednosti promenljivih kao atribute objekata $view->var = 'some value' Mogue je kori邸enje postojeih i implementacija novih filtera i helpera
  • 41. Zend MVC Zend_Model ta je model? Baza podataka Web servis Feed Konfiguracioni fajl Fajl sistem Slike ...
  • 42. Zend MVC Zend_Model Jo邸 uvek ne postoji generalna komponenta pod ovim nazivom, ali je podr転ana sledeim: Zend_Db_Table Zend_Service Zend_Soap Zend_XmlRpc Zend_Feed Zend_Config ...
  • 43. Zend_Form Objektna reprezentacije web (HTML) formi. Omoguava kreiranje standardnih kontrola kori邸enjem elemenata (Zend_Form_Element). Podr邸ka za validaciju i filtriranje ulaznih podataka. Prilagoavanje dizajna kori邸enjem dekoratora (Zend_Form_Decorator), grupa (Zend_Form_DisplayGroup) i subformi (Zend_Form_SubForm).
  • 44. Prednosti MVC-a Razdvaja kod u celine prema njihovoj odgovornosti Biznis logika Prezentaciona logika Rutiranje Predvidiva lokacija koda na serveru Obino koristi OOP olak邸ano testiranje I odr転avanje na du転e staze
  • 45. Zend MVC Sve zajedno
  • 46. ta smo nauili? Uoili smo probleme koji se javljaju u razvoju web aplikacija. Upoznali smo se sa MVC-om I naveli neke konkretne implementacije. Nauili smo 邸ta jo邸 korisno nude web freamework implementacije. Detaljnije smo se upoznali sa Zend Framework-om i njegovom MVC implementacijom.
  • 47. Demonstracija Kreirati hello world aplikaciju kori邸enjem Zend Tool-a. Zatim kreirati novu akciju i novi kontroler. Dodati layout (two-step view pattern). Dodati model. Povezati se na MySQL bazu. Proitati podatke iz baze. Dodati formu, pokazati validatore I filtere. Validirati podatke i upisati ih u bazu.