Napredne tehnike razvoja web aplikacija - Zend Framework

3,033 views

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,033
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
41
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Napredne tehnike razvoja web aplikacija - Zend Framework

  1. 1. Napredne tehnike razvoja web aplikacija, Zend Framework Saša Stamenković Senior Software Developer Troxo
  2. 2. Šta je to MVC? <ul><li>Model–View–Controller ( MVC ) je arhitekturni obrazac koji se koristi u softverskom inžinjerstvu. Ovaj obrazac razdvaja podatke (model), korisnički interfejs (view), i obradu (controll), dozvoljavajući tako nezavisni razvoj, testiranje i održavanje ovih komponenti. </li></ul>
  3. 3. Šta je to MVC?
  4. 4. Šta je to MVC?
  5. 5. Model <ul><li>Je način predstavljanja podataka koje data aplikacija koristi. Sama logika aplikacije daje neko značenje sirovim podatcima, npr. izračunavajući da li je danas korisnikov rodjendan. </li></ul>
  6. 6. View <ul><li>Predstavlja model u odredjenoj formi, najčešće kroz korisnički interfejs. Moguće je postojanje više pogleda za jedan isti model. </li></ul>
  7. 7. Controller <ul><li>Prihvata informacije sa ulaza, poziva modele objekata i vraća rezultat. </li></ul><ul><li>MVC aplikacija može imati više model/view/controller trija, gde će svaki biti zadužen za odredjeni U/I. </li></ul>
  8. 8. Malo istorije <ul><li>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 : &quot; Applications Programming in Smalltalk-80: How to use Model–View–Controller “ </li></ul><ul><li>Iako postoje više varijacija naziva, kao na primer Model View Presenter kod .NET Framework-a, svi oni imaju isti redosled operacija. </li></ul>
  9. 9. Koji se problemi javljaju u web aplikacijama? <ul><li>Mešanje biznis i prezentacione logike </li></ul><ul><li>Copy-paste kod </li></ul><ul><li>Nepostojanje strogih konvencija </li></ul><ul><li>Nestandardno rutiranje </li></ul><ul><li>Loše rukovanje greškama </li></ul><ul><li>Sigurnosni propusti </li></ul><ul><li>... </li></ul>
  10. 10. Neke web aplikacije izgledaju ovako
  11. 11. A njihovo održavanje ovako
  12. 12. Mešanje biznis i prezentacione logike
  13. 13. Mešanje biznis i prezentacione logike <ul><li>Sigurnosni propusti </li></ul><ul><li>Kod nije reusabilan </li></ul><ul><li>Eventualne greške nisu hendlovane </li></ul><ul><li>Konfiguracija nije centralizovana </li></ul><ul><li>Održavanje ovakvog koda je otežano </li></ul>
  14. 14. Nestandardno rutiranje
  15. 15. Nestandardno rutiranje <ul><li>Svaki programer ga rešava na svoj način </li></ul><ul><li>Svaka nova aplikacija zahteva ponovni prolazak kroz fazu rešavanja ovog problema </li></ul><ul><li>Povećano vreme razvoja aplikacije </li></ul><ul><li>Otežano održavanje i razumevanje koda od strane članova razvojnog tima </li></ul>
  16. 16. Sigurnost (security) web aplikacija <ul><li>SQL injection </li></ul><ul><li>Cross-site scripting (XSS) </li></ul><ul><li>Cross-site request forgery (CSRF) </li></ul>
  17. 17. Aplikacije su kao luk – imaju slojeve
  18. 18. MVC
  19. 19. To nije sve <ul><li>Navigacija </li></ul><ul><li>Two step view </li></ul><ul><li>Autentifikacija I autorizacija </li></ul><ul><li>Validatori i filteri </li></ul><ul><li>Web servisi </li></ul><ul><li>ORM </li></ul><ul><li>Ajax i DOM </li></ul><ul><li>Internacionalizacija </li></ul><ul><li>Scaffold </li></ul>
  20. 20. To nije sve <ul><li>Unit testovi </li></ul><ul><li>Sigurnost (XSS, CSRF , SQL Injection..) </li></ul><ul><li>Keširanje </li></ul><ul><li>Web servisi </li></ul><ul><li>SEO </li></ul><ul><li>... </li></ul>
  21. 21. Neki od MVC frameworaka <ul><li>Zend framework </li></ul><ul><li>Ruby on Rails </li></ul><ul><li>Play! </li></ul><ul><li>Django </li></ul><ul><li>ASP. net MVC framework </li></ul>
  22. 22. Zend framework <ul><li>Open source framework za PHP. </li></ul><ul><li>Nastao oktobra 2005. </li></ul><ul><li>Use-at-will framework (veoma fleksibilan). </li></ul><ul><li>Podržava više DBMS-a : MySQL, Oracl, SQL Server, IBM DB2, SQL Lite.. </li></ul><ul><li>Sve komponente su u potpunosti objektno-orientisani PHP 5. </li></ul><ul><li>http://framework.zend.com/ </li></ul>
  23. 23. Ruby on Rails <ul><li>Open source framework za jezik Ruby. </li></ul><ul><li>Nastao Jula 2004. </li></ul><ul><li>Moćan scaffolding, mehanizam za automatsko kreiranje modela, pogleda, testova, baze... </li></ul><ul><li>Može da se izvršava na raznim serverima, pr. Mongrel, Lighttpd, Abyss, Apache, Passenger. </li></ul><ul><li>Implementira Convention over Configuration, i Don't repeat yourself. </li></ul><ul><li>http://rubyonrails.org/ </li></ul>
  24. 24. Play! <ul><li>Značajno olakšava razvoj web aplikacija u Javi. Dostupne sve standardne Java metode </li></ul><ul><li>Direktno kompajlira kod i učitava ga na JVM, bez potrebe za restartovanjem servera. </li></ul><ul><li>Omogućava pun i jednostavan pristup HTTP metodama. </li></ul><ul><li>Pri pojavi greške u kodu, brzo pronalazi tačnu liniju, čak i u templejtima. </li></ul><ul><li>http://www.playframework.org/ </li></ul>
  25. 25. Django <ul><li>Nastao 2005. Nazvan po jazz gitaristi Django Reinhardt </li></ul><ul><li>Primarni cilj je olakšano kreiranje kompleksih web aplikacija, principom ponovne upotrebe komponenti. </li></ul><ul><li>Framework sadrži i server za razvoj i testiranje. </li></ul><ul><li>Sadrži framework za razvoj GIS aplikacija </li></ul><ul><li>http://www.djangoproject.com/ </li></ul>
  26. 26. ASP. net MVC <ul><li>Microsoft -ov framework za ASP.net, prva puna verzija izašla početkom 2009. </li></ul><ul><li>Omogućava testiranje pojedinačnih komponenti. </li></ul><ul><li>Podržava sve metode standardnog ASP.net-a, ali sadrži mnogo manje apstrakcija u odnosu na klasično web form okruženje. </li></ul><ul><li>Jednostavna zamena componenti frameworka . </li></ul><ul><li>www. asp . net / mVC / </li></ul>
  27. 27. Pregled
  28. 28. Pregled
  29. 29. Zend Framework
  30. 30. Šta je unutra?
  31. 31. Zend MVC <ul><li>Model – model podataka koje koristimo u aplikaciji (sloj podataka) </li></ul><ul><ul><li>Baza </li></ul></ul><ul><ul><li>Web servisi </li></ul></ul><ul><ul><li>Feed -ovi </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><li>View – ono što prikazujemo korisniku (prezentacioni sloj) </li></ul><ul><li>Controller – upravlja zahtevima I odlučuje o tome šta se dešava (sloj logike) </li></ul>
  32. 32. Zend MVC - interakcija <ul><li>Controller ↔ view </li></ul><ul><li>Controller ↔ model </li></ul><ul><li>View ← model </li></ul><ul><ul><li>View može da zatraži podatke od modela, ali ne i da upisuje podatke. </li></ul></ul>
  33. 33. Zend MVC
  34. 34. Zend MVC
  35. 35. Zend MVC – Front Controller <ul><li>Rukuje svim zahtevima </li></ul><ul><li>Dlegira ih ka Action Controller-ima </li></ul><ul><li>Vraća Response </li></ul>
  36. 36. Zend MVC – Zend_Controller <ul><li>Request – sadrži sve informacija o zahtevu </li></ul><ul><li>Router – parsira zahtev na tokene koji predstavljaju modul, controler, akciju, parametre... </li></ul><ul><li>Dispatcher – mapira tokene sa odgovarajućim klasama i metodama i inicira njihovo izvršenje </li></ul><ul><li>Response – sadrži odgovor i mogućnost njegovog slanja klijentu </li></ul>
  37. 37. Zend MVC dijagram
  38. 38. Zend MVC – rutiranje <ul><li>Podrazumevano rutiranje </li></ul><ul><ul><li>/controller/action </li></ul></ul><ul><ul><li>/controller/action/key1/value1/key2/value2 </li></ul></ul><ul><ul><li>/module/controller/action </li></ul></ul><ul><ul><li>/module/controller/action/key1/value1/... </li></ul></ul>
  39. 39. Zend MVC – Zend_Controller_Action <ul><li>Klase koje nasleđuju Zend_Controller_Action </li></ul><ul><li>Definišu javne metode za svaku akciju </li></ul><ul><li>Mogu implementirati neke od event-a: init(), preDispatch(), postDispatch()... </li></ul><ul><li>Mogu koristiti korisne nasleđene metode: _forward(), _redirect(), __call().. </li></ul><ul><li>Moguće je implementirati plaginove I helpere za njih </li></ul>
  40. 40. Zend MVC – Zend_View <ul><li>Implementacija Zend_View_Interface omogućava kreiranje sopstevnog template engine -a </li></ul><ul><li>Defaultna implementacija (Zend_View) koristi PHP kao template engine </li></ul><ul><li>Dodeljuje i uzima vrednosti promenljivih kao atribute objekata </li></ul><ul><ul><li>$view->var = 'some value' </li></ul></ul><ul><li>Moguće je korišćenje postojećih i implementacija novih filtera i helpera </li></ul>
  41. 41. Zend MVC – Zend_Model <ul><li>Šta je model? </li></ul><ul><li>Baza podataka </li></ul><ul><li>Web servis </li></ul><ul><li>Feed </li></ul><ul><li>Konfiguracioni fajl </li></ul><ul><li>Fajl sistem </li></ul><ul><li>Slike </li></ul><ul><li>... </li></ul>
  42. 42. Zend MVC – Zend_Model <ul><li>Još uvek ne postoji generalna komponenta pod ovim nazivom, ali je podržana sledećim: </li></ul><ul><li>Zend_Db_Table </li></ul><ul><li>Zend_Service </li></ul><ul><li>Zend_Soap </li></ul><ul><li>Zend_XmlRpc </li></ul><ul><li>Zend_Feed </li></ul><ul><li>Zend_Config </li></ul><ul><li>... </li></ul>
  43. 43. Prednosti MVC-a <ul><li>Razdvaja kod u celine prema njihovoj odgovornosti </li></ul><ul><ul><li>Biznis logika </li></ul></ul><ul><ul><li>Prezentaciona logika </li></ul></ul><ul><ul><li>Rutiranje </li></ul></ul><ul><li>Predvidiva lokacija koda na serveru </li></ul><ul><li>Obično koristi OOP – olakšano testiranje I održavanje na duže staze </li></ul>
  44. 44. Zend MVC – Sve zajedno
  45. 45. Demonstracija <ul><li>Kreirati hello world aplikaciju korišćenjem Zend Tool-a. </li></ul><ul><li>Zatim kreirati novu akciju i novi kontroler. </li></ul><ul><li>Dodati layout (two-step view pattern). </li></ul><ul><li>Dodati model. </li></ul><ul><li>Povezati se na MySQL bazu. </li></ul><ul><li>Pročitati podatke iz baze. </li></ul><ul><li>Dodati formu, pokazati validatore I filtere. </li></ul><ul><li>Validirati podatke i upisati ih u bazu. </li></ul>
  46. 46. Linkovi <ul><li>http://www.slideshare.net/umpirsky/napredne-tehnike-razvoja-web-aplikacija-zend-framework </li></ul><ul><li>http://code.google.com/p/librarydemo/ </li></ul><ul><li>[email_address] </li></ul><ul><li>http://twitter.com/umpirsky </li></ul>Kontakt
  47. 47. Pitanja i odgovori
  48. 48. Hvala na pažnji

×