Veb-frejmvork (engl. web application framework, WAF) je frejmvork koji je dizajniran da podrži dinamične veb-sajtove, veb-aplikacije, veb-servise i veb-resurse. Frejmvork cilja na ublažavanje opštih troškova povezanih sa čestim aktivnostima izvršenih u veb-razvoju. Na primer, mnogi frejmvorci omogućavaju biblioteke za pristup bazama podataka, šabloniranje frejmvorka i upravljanje sesijama, i često promovišu ponovno korišćenje koda.[1] Za poređenje konkretnih veb-frejmvorka, pogledati „Poređenje veb-frejmvorka”.

Istorija uredi

Pošto dizajn svetske mreže nije bio inherentno dinamičan, rani hipertekst se sastojao iz ručno-napisanog HTML koda koji je objavljen na veb serverima. Bilo kakve modifikacije na objavljenim stranicama su bile potrebne da budu izvršene od strane autora tih stranica. Da bi se omogućila dinamična veb stranica koja bi reflektovala korisničke unose, Common Gateway Interface (CGI) standard je uveden za interfejsing spoljnih aplikacija sa veb serverima.[2] CGI je mogao negativno uticani na serversko opterećenje, ipak, pošto je svaki zahtev morao biti pokrenut kao odvojeni proces.

Skoro u isto vreme, potpuno integrisana serversko/jezička razvojna okruženja su se prvi put pojavila, kao što su WebBase i novi jezici specifično napraljeni za korišćenje na vebu, kao što su ColdFusion, PHP i Active Server Pages.

Dok velika većina jezika dostupnih programerima za korišćenje u pravljenju dinamičnih veb stranica imaju biblioteke da pomognu pri čestim zadacima, veb aplikacije obično zahtevaju posebne biblioteke koje su korisne u veb aplikacijama, kao što je pravljenje HTML-a (na primer, JavaServer Faces). Eventualno, zreli, "potpuno nagomilani" frejmvorci su se pojavili, koji su obični prikupljali višestruke biblioteke korisne za veb razvoj u jednu kohezivnu softversku gomilu za veb programere na korišćenje. Primeri ovoga uključuju ASP.NET, JavaEE, WebObjects, web2py, OpenACS, Catalyst, Mojolicious, Ruby on Rails, Grails, Django, Zend Framework, Yii,[3] CakePHP[4] i Symfony.

Tipovi arhitektura okvira uredi

Mnogi frejmvorci veb priloga su bazirani na MVC arhitektonskom (MVC) uzorku.

MVC Arhitektura (MVC) uredi

Mnogi frejmvorci prate MVC arhitektnoski uzorak da odvoje model podatka od pravila poslovanja iz korisničkog sučelja. Ovo je generalno smatrano dobrom praksom jer modularizuje kod, promoviše ponovno korišćenje koda, i dozvoljava primenu višestrukih sučelja. U veb aplikacijama, ovo omogućava prezentovanje različitih pregleda da budu prezentovani, kao šro stu veb stranice za ljude, i sučelja veb servisa za daljinske aplikacije.

Push-bazirani i pull-bazirani uredi

Mnogi MVC frejmvorci prate push-baziranu arhitekturu takođe nazvanu i kao "action-bazirana". Ovi frejmvorci koriste akcije koje odrađuju neophodnu obradu, a zatim "guraju" podatak na sloj pregleda da bi se rezultati obradili.[5] Django, Ruby on Rails, Symfony, Spring MVC, Stripes, CodeIgniter[6] su dobri primeri ove arhitekture. Alternativa ovome je pull-bazirana arhitektura, ponekad takođe nazvana "component-bazirana". Ovi frejmvorci počilju sa slojem pregleda, koji može zatim "povući" rezultate iz višestrukih kontrolora po potrebi. U ovoj arhitekturi, višestruki kontrolori mogu biti uključeni u jedan pregled. Lift, Tapestry, JBoss Seam, JavaServer Faces, (µ)Micro Arhivirano na sajtu Wayback Machine (26. septembar 2015), i Wicket su primeri pull-baziranih arhitektura. Play, Struts, RIFE i ZK imaju podršku i za push i pull bazirane pozive kontrolora aplikacije.

Trostruka organizacija uredi

U trostrukoj organizaciji, aplikacije su struktuirane oko tri fizička sprata: klijent, aplikacija, i baza podataka.[7][8][9][10] Baza podataka je normalno RDBMS. Aplikacija sadrži poslovnu logiku, pokretajući se na serveru i komunicirajući sa klijentom koristeći HTTP.[11] Klijent na veb aplikacijama je veb pregledač koji pokreće HTML sloj generisan od strane aplikacije.[12][13] Izraz ne treba mešati sa MVC, gde je, za razliku od trostruke organizacije, smatran dobrom praksom da se drži poslovna logika podalje od kontrolora, odnosno "srednjeg sloja".[14][15]

Aplikacije frejmvorka uredi

Frejmvorci su napravljeni da podržavaju pravljenje internet aplikacija baziranih na jednoj programskom jeziku, u rasponu od fokusa na alatke za generalne primere kao što stu Zend Framework i Ruby on Rails, koji povećavaju mogućnosti određenog jezika, do paketa programiranih u nativnom jeziku napravljenih oko određene korisničke aplikacije, kao što su sistemi upravljanja podacima, neke alatke za prenosiv razvoj i neke alatke za portale.

Veb frejmvorci generalnih primera uredi

Na primer, Django, Zend Framework, Ruby on Rails.

Forumi razgovora, vikipedije i veb blogovi uredi

Na primer, WikiBase/WikiWikiWeb.

Portali organizacija uredi

Na primer, JBoss Portal ili eXo Platform.

Sistemi upravljanja sadržaja (CMS) uredi

U frejmvorcima veb priloga, upravljanje sadržajima je način organizacije, kategorizacije, i struktuiranje izvora informacija kao što su poruke, slike, dokumenti, audio i video zapisi tako da mogu biti skladišteni, objavljeni, i uređivani sa lakoćom i fleksibilnošću. Sistem upravljanja sadržaja (CMS) je korišćen za prikupljanje, upravljanje, i objavljivanje sadržaja, sklađivanjem ih kao komponente ili cela dokumenta, pridržavajući se dinamičnih veza među komponentima.

Neki projekti koji su istorijski bili nazvani sistemima za upravljanje sadržaja su počeli da preuzimaju uloge više-slojnih frejmvorka veb priloga. Na primer, Drupal-eva struktura omogućava minimalno jezgro čija je funkcija proširena kroz module koji omogućavaju funkcije generalno povezane sa frejmvorcima veb priloga. Solodev i Joomla platforme omogućavaju skup API-a za pravljenje veb aplikacija i aplikacija linija koda. Kakogod, diskutabilno je to da li je "upravljanje sadržaja" primarna vrednost takvih sistema, naročito kada neki, poput SilverStripe, omogućavaju objektno-orijentisani MVC frejmvork. Moduli dodataka sada dozvoljavaju ovim sistemima da funkcionišu kao punopravne aplikacije izvan obima upravljanja sadržaja. Mogu omogućavati funkcionalne API-e, funkcionalne frejmvorke, standarde kodiranja, i mnoge funkcije tradicionalno povezane sa veb-frejmvorcima.

Mogućnosti uredi

Sistem veb šablona uredi

Keširanje uredi

Veb keširanje je keširanje veb dokumenata u cilju smanjenja opterećenja mreže, opterećenja servera, i vidljivog "kašnjenja". Veb keš skladišti kopije dokumenata koji kroz njega prolaze; sledeći zahtevi mogu biti zadovoljeni iz keša ako su određeni uslovi ispunjeni. Neki frejmvorci aplikacija omogućavaju mehanizme za keširanje dokumenata i zaobilaženje raznih faza pripreme stranice, kao što je pristup bazi podataka ili interpretacija šablona.

Bezbednost uredi

Neki frejmvorci veb priloga dolaze sa prilozima autentifikacije i autorizacije, koji omogućavaju veb serveru da identifikuje korisnike aplikacije, i ograniče pristup potprogramima na osnovu nekog definisanog uslova. Drupal je jedan primer koji omogućava pristup stranicama po principu uloga, i omogućava veb-bazirano sučelje za pravljenje korisnika i dodeljivanje uloga.

Pristup bazi podataka, mapiranje i konfiguracija uredi

Mnogi frejmvorci veb priloga prave ujedinjeni API na bek-end bazu podataka, omogućavajući veb aplikacijama da rade sa širokom izborom baza podataka bez promene koda, kao i omogućavajući programerima da rade na na konceptima višeg nivoa. Dodatno, neki objektno-orijentisani frejmvorci sadrže alatke mapiranja da omoguće objektno-relaciono mapiranje, koje mapira objekte do petlji.

Neki frejmvorci umanjuju konfiguraciju veb aplikacije kroz korišćenje introspekcije i/ili dobro poznatih konvencija. Na primer, mnogi Java frejmvorci koriste hibernaciju kao sloj upornosti, koji može generisati šemu baze podataka tokom pokretanja programa sposoban da bude uporan pri obradi neophodne informacije. Ovo omogućava dizajneru aplikacije da dizajnira poslovne objekte bez potrebe da eksplicitno definiše šemu baze podataka. Frejmvorcic kao što su Ruby on Rails takođe mogu raditi inverzno, u prevodu, da definišu atribute modela objekata tokom pokretanja programa na osnovu šeme baze podataka.

Druge mogućnosti koje frejmvorci mogu omogućiti uključuju podršku transakcije i alatke za migraciju baze podataka.

Skele uredi

URL mapiranje uredi

Postrojenje mapiranja URL frejmvorka je mehanizam kojim frejmvork interpretira URL. Neki frejmvorci, kao što su Drupal i Django, povezuju priloženi URL sa već definisanim obrascima korišćenjem regularnih izraza, dok neki drugi koriste modifikator veb adresa da prevedu priloženi URL u onaj koji će podložni endžin prepoznati. Još jedna tehnika je obilazak grafa kao što se koristi u Zope, gde je URL razložen u koracima koji prelaze graf objekta (modela ili pregleda).

Sistem URL mapiranja koji koristi obrazac povezivanja ili modifikator veb adresa, omogućava više "prijateljskih URL-ova" da budu korišćeni, povećavajući jednostavnost sajta i omogućavajući bolje indeksiranje od strane ptretraživača. Na primer, URL koji se završava sa "/page.cgi?cat=science&topic=physics" može biti prosto biti promenjen u "/page/science/physics". Ovo čini da URL bude lakši za čitanje i pisanje za ljude, i omogućava pretraživačima bolje informacije o strukturnom rasporedu sajta. Pristup obilaska grafa je takođe sklono pravljenju prijateljskih URL-ova. Kraći URL kao što je "/page/science" teži da postoji kao podrazumevani pošto je jednostavno kraći oblik duže verzije do "/page/science/physics".

Ajaks uredi

Ajaks, skraćeno od "Asynchronous JavaScript i XML", je tehnika veb razboja za pravljenje veb aplikacija. Cilj je da se naprave veb stranice više odzivnim primenom razmene malih količina podataka sa serverom u pozadini, tako da celokupna veb stranica ne mora da bude ponovo učitana svaki put kada korisnik zahteva promenu. Ovo je namenjeno povećanju interaktivnosti, brzini i upotrebljivosti veb sajtova.

Zbog kompleksnosti Ajaks programiranja u JavaScript-i, postoje mnogobrojni Ajaks frejmvorci koji ekskluzivno rade nad Ajaks podrškom. Neki Ajaks frejmvorci su ugrađeni kao deo većih frejmvorka. Na primer, jQuery JavaScript biblioteka je uključena u Ruby on Rails.

Sa povećanjem interesovanja za razvoj "Veb-a 2.0" multimedijalnih aplikacija, kompleksnost programiranja direktno u Ajaksu i JavaScript-i je postala tako očigledna da je tehnologija kompajlera nastupila, da omogući programerima da rade u jezicima visokog nivoa kao što su Java, Pajton i Rubi. Prvi od ovih kompajlera je bio Morfik pa zatim Google Web Toolkit, sa portovima do Pajtona i Rubi u obliku Pyjamas i RubyJS koji su kasnije došli. Ovi kompajleri i njihove povezane biblioteke skupa dodataka čine razvoj multimedijalnih Ajaks aplikacije mnogo više srodnim sa razvoj desktop aplikacija.

Veb servisi uredi

Neki frejmvorci omogućavaju alatke za pravljenje i omogućavanje veb servisa. Ove alatke mogu ponuditi slične alatke kao ostatak veb aplikacije.

Veb izvori uredi

Mnogobrojni noviji Veb 2.0 RESTful frejmvorci sada omogućavaju izvorno-orgjentisanu arhitektonsku (ROA) infrastrukturu za pravljenje kolekcija izvora u obliku ontologije Semantičkog veba, osnovanu na konceptima iz RDF-a.

Vidi još uredi

Reference uredi

  1. ^ Multiple (wiki). „Web application framework”. Docforge. Arhivirano iz originala 16. 10. 2018. g. Pristupljeno 19. 01. 2010. 
  2. ^ „CGI: Common Gateway Interface”. Arhivirano iz originala 09. 04. 2009. g. Pristupljeno 29. 07. 2007. 
  3. ^ yiiframework.com
  4. ^ CakePHP - Build fast, grow solid | PHP Framework | Home
  5. ^ Thomson, Kris (29. 10. 2003). „Clarification on MVC= Pull and MVC Push”. Arhivirano iz originala 26. 09. 2007. g. Pristupljeno 29. 07. 2007. 
  6. ^ „What are the fundamental differences between Struts and JSF”. Struts.apache.org. 14. 02. 2011. Arhivirano iz originala 08. 08. 2012. g. Pristupljeno 14. 06. 2013. 
  7. ^ Microsoft. „Three-tiered distribution”. Pristupljeno 19. 09. 2011. 
  8. ^ Oracle. „clustering_concepts_10en” (PDF). Pristupljeno 19. 09. 2011. 
  9. ^ Perkoski, Robert R. „Introduction to Web Development”. Pristupljeno 19. 09. 2011. 
  10. ^ IBM. „Using Client Access Express in a three tier environment”. Pristupljeno 19. 09. 2011. [mrtva veza]
  11. ^ Oracle. „Understanding the Three-Tier Architecture”. Pristupljeno 19. 09. 2011. 
  12. ^ Microsoft. „Pragmatic Architecture: Layering”. Arhivirano iz originala 10. 08. 2011. g. Pristupljeno 19. 09. 2011. 
  13. ^ Arokia. „3-Tier Web Architecture”. Arhivirano iz originala 18. 07. 2012. g. Pristupljeno 19. 09. 2011. 
  14. ^ „ASP.NET MVC Controller Best Practices”. Arhivirano iz originala 11. 10. 2011. g. Pristupljeno 19. 09. 2011. 
  15. ^ Buck, Jamis. „Skinny Controller, Fat Model”. Pristupljeno 19. 09. 2011.