Веб-оквир

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

Оквир веб прилога (WAF) је програмски оквир који је дизајниран да подржи динамичне веб-сајтове, веб-апликације, веб-сервисе и веб-ресурсв. Оквир циља на ублажавање општих трошкова повезаних са честим активностима извршених у веб-развоју. На пример, многи оквири омогућавају библиотеке за приступ базама података, шаблонирање оквира и управљање сесијама, и често промовишу поновно коришћење кода.[1] За поређење конкретних оквира веб прилога, погледати „Поређење оквира веб прилога”.

Историја[уреди]

Пошто дизајн светске мреже није био инхерентно динамичан, рани хипертекст се састојао из ручно-написаног HTML кода који је објављен на веб серверима. Било какве модификације на објављеним страницама су биле потребне да буду извршене од стране аутора тих страница. Да би се омогућила динамична веб страница која би рефлектовала корисничке уносе, Common Gateway Interface (CGI) стандард је уведен за интерфејсинг спољних апликација са веб серверима.[2] CGI је могао негативно утицани на серверско оптерећење, ипак, пошто је сваки захтев морао бити покренут као одвојени процес.

Скоро у исто време, потпуно интегрисана серверско/језичка развојна окружења су се први пут појавила, као што су WebBase и нови језици специфично напраљени за коришћење на вебу, као што су ColdFusion, PHP и Active Server Pages.

Док велика већина језика доступних програмерима за коришћење у прављењу динамичних веб страница имају библиотеке да помогну при честим задацима, веб апликације обично захтевају посебне библиотеке које су корисне у веб апликацијама, као што је прављење HTML-а (на пример, JavaServer Faces). Евентуално, зрели, "потпуно нагомилани" оквири су се појавили, који су обични прикупљали вишеструке библиотеке корисне за веб развој у једну кохезивну софтверску гомилу за веб програмере на коришћење. Примери овога укључују ASP.NET, JavaEE, WebObjects, web2py, OpenACS, Catalyst, Mojolicious, Ruby on Rails, Grails, Django, Zend Framework, Yii,[3] CakePHP[4] и Symfony.

Типови архитектура оквира[уреди]

Многи оквири веб прилога су базирани на МВЦ архитектонском (MVC) узорку.

МВЦ Архитектура (MVC)[уреди]

Многи оквири прате МВЦ архитектноски узорак да одвоје модел податка од правила пословања из корисничког сучеља. Ово је генерално сматрано добром праксом јер модуларизује код, промовише поновно коришћење кода, и дозвољава примену вишеструких сучеља. У веб апликацијама, ово омогућава презентовање различитих прегледа да буду презентовани, као шро сту веб странице за људе, и сучеља веб сервиса за даљинске апликације.

Push-базирани и pull-базирани[уреди]

Многи МВЦ оквири прате push-базирану архитектуру такође названу и као "action-базирана". Ови оквири користе акције које одрађују неопходну обраду, а затим "гурају" податак на слој прегледа да би се резултати обрадили.[5] Django, Ruby on Rails, Symfony, Spring MVC, Stripes, CodeIgniter[6] су добри примери ове архитектуре. Алтернатива овоме је pull-базирана архитектура, понекад такође названа "component-базирана". Ови оквири почиљу са слојем прегледа, који може затим "повући" резултате из вишеструких контролора по потреби. У овој архитектури, вишеструки контролори могу бити укључени у један преглед. Lift, Tapestry, JBoss Seam, JavaServer Faces, (µ)Micro, и Wicket су примери pull-базираних архитектура. Play, Struts, RIFE и ZK имају подршку и за push и pull базиране позиве контролора апликације.

Трострука организација[уреди]

У трострукој организацији, апликације су структуиране око три физичка спрата: клијент, апликација, и база података.[7][8][9][10] База података је нормално RDBMS. Апликација садржи пословну логику, покретајући се на серверу и комуницирајући са клијентом користећи HTTP.[11] Клијент на веб апликацијама је веб прегледач који покреће HTML слој генерисан од стране апликације.[12][13] Израз не треба мешати са МВЦ, где је, за разлику од троструке организације, сматран добром праксом да се држи пословна логика подаље од контролора, односно "средњег слоја".[14][15]

Апликације оквира[уреди]

Оквири су направљени да подржавају прављење интернет апликација базираних на једној програмском језику, у распону од фокуса на алатке за генералне примере као што сту Zend Framework и Ruby on Rails, који повећавају могућности одређеног језика, до пакета програмираних у нативном језику направљених око одређене корисничке апликације, као што су системи управљања подацима, неке алатке за преносив развој и неке алатке за портале.

Веб оквири генералних примера[уреди]

На пример, Django, Zend Framework, Ruby on Rails.

Форуми разговора, википедије и веб блогови[уреди]

На пример, WikiBase/WikiWikiWeb.

Портали организација[уреди]

На пример, JBoss Portal или eXo Platform.

Системи управљања садржаја (CMS)[уреди]

У оквирима веб прилога, управљање садржајима је начин организације, категоризације, и структуирање извора информација као што су поруке, слике, документи, аудио и видео записи тако да могу бити складиштени, објављени, и уређивани са лакоћом и флексибилношћу. Систем управљања садржаја (CMS) је коришћен за прикупљање, управљање, и објављивање садржаја, склађивањем их као компоненте или цела документа, придржавајући се динамичних веза међу компонентима.

Неки пројекти који су историјски били названи системима за управљање садржаја су почели да преузимају улоге више-слојних оквира веб прилога. На пример, Drupal-ева структура омогућава минимално језгро чија је функција проширена кроз модуле који омогућавају функције генерално повезане са оквирима веб прилога. Solodev и Joomla платформе омогућавају скуп АПИ-а за прављење веб апликација и апликација линија кода. Какогод, дискутабилно је то да ли је "управљање садржаја" примарна вредност таквих система, нарочито када неки, попут SilverStripe, омогућавају објектно-орјентисани МВЦ оквир. Модули додатака сада дозвољавају овим системима да функционишу као пуноправне апликације изван обима управљања садржаја. Могу омогућавати функционалне АПИ-е, функционалне оквире, стандарде кодирања, и многе функције традиционално повезане са Оквирима веб прилога.

Могућности[уреди]

Систем веб шаблона[уреди]

Кеширање[уреди]

Веб кеширање је кеширање веб докумената у циљу смањења оптерећења мреже, оптерећења сервера, и видљивог "кашњења". Веб кеш складишти копије докумената који кроз њега пролазе; следећи захтеви могу бити задовољени из кеша ако су одређени услови испуњени. Неки оквири апликација омогућавају механизме за кеширање докумената и заобилажење разних фаза припреме странице, као што је приступ бази података или интерпретација шаблона.

Безбедност[уреди]

Неки оквири веб прилога долазе са прилозима аутентификације и ауторизације, који омогућавају веб серверу да идентификује кориснике апликације, и ограниче приступ потпрограмима на основу неког дефинисаног услова. Drupal је један пример који омогућава приступ страницама по принципу улога, и омогућава веб-базирано сучеље за прављење корисника и додељивање улога.

Приступ бази података, мапирање и конфигурација[уреди]

Многи оквири веб прилога праве уједињени АПИ на бек-енд базу података, омогућавајући веб апликацијама да раде са широком избором база података без промене кода, као и омогућавајући програмерима да раде на на концептима вишег нивоа. Додатно, неки објектно-орјентисани оквири садрже алатке мапирања да омогуће објектно-релационо мапирање, које мапира објекте до петљи.

Неки оквири умањују конфигурацију веб апликације кроз коришћење интроспекције и/или добро познатих конвенција. На пример, многи Јава оквири користе хибернацију као слој упорности, који може генерисати шему базе података током покретања програма способан да буде упоран при обради неопходне информације. Ово омогућава дизајнеру апликације да дизајнира пословне објекте без потребе да експлицитно дефинише шему базе података. Оквири као што су Ruby on Rails такође могу радити инверзно, у преводу, да дефинишу атрибуте модела објеката током покретања програма на основу шеме базе података.

Друге могућности које оквири могу омогућити укључују подршку трансакције и алатке за миграцију базе података.

Скеле[уреди]

URL мапирање[уреди]

Постројење мапирања URL оквира је механизам којим оквир интерпретира URL. Неки оквири, као што су Drupal и Django, повезују приложени URL са већ дефинисаним обрасцима коришћењем регуларних израза, док неки други користе модификатор веб адреса да преведу приложени URL у онај који ће подложни енџин препознати. Још једна техника је обилазак графа као што се користи у Zope, где је URL разложен у корацима који прелазе граф објекта (модела или прегледа).

Систем URL мапирања који користи образац повезивања или модификатор веб адреса, омогућава више "пријатељских URL-ова" да буду коришћени, повећавајући једноставност сајта и омогућавајући боље индексирање од стране птретраживача. На пример, URL који се завршава са "/page.cgi?cat=science&topic=physics" може бити просто бити промењен у "/page/science/physics". Ово чини да URL буде лакши за читање и писање за људе, и омогућава претраживачима боље информације о структурном распореду сајта. Приступ обиласка графа је такође склоно прављењу пријатељских URL-ова. Краћи URL као што је "/page/science" тежи да постоји као подразумевани пошто је једноставно краћи облик дуже верзије до "/page/science/physics".

Ајакс[уреди]

Ајакс, скраћено од "Asynchronous JavaScript и XML", је техника веб разбоја за прављење веб апликација. Циљ је да се направе веб странице више одзивним применом размене малих количина података са сервером у позадини, тако да целокупна веб страница не мора да буде поново учитана сваки пут када корисник захтева промену. Ово је намењено повећању интерактивности, брзини и употребљивости веб сајтова.

Због комплексности Ајакс програмирања у JavaScript-и, постоје многобројни Ајакс оквири који ексклузивно раде над Ајакс подршком. Неки Ајакс оквири су уграђени као део већих оквира. На пример, jQuery JavaScript библиотека је укључена у Ruby on Rails.

Са повећањем интересовања за развој "Веб-а 2.0" мултимедијалних апликација, комплексност програмирања директно у Ајаксу и JavaScript-и је постала тако очигледна да је технологија компајлера наступила, да омогући програмерима да раде у језицима високог нивоа као што су Јава, Пајтон и Руби. Први од ових компајлера је био Morfik па затим Google Web Toolkit, са портовима до Пајтона и Руби у облику Pyjamas и RubyJS који су касније дошли. Ови компајлери и њихове повезане библиотеке скупа додатака чине развој мултимедијалних Ајакс апликације много више сродним са развој десктоп апликација.

Веб сервиси[уреди]

Неки оквири омогућавају алатке за прављење и омогућавање веб сервиса. Ове алатке могу понудити сличне алатке као остатак веб апликације.

Веб извори[уреди]

Многобројни новији Веб 2.0 RESTful оквири сада омогућавају изворно-оргјентисану архитектонску (ROA) инфраструктуру за прављење колекција извора у облику онтологије Семантичког веба, основану на концептима из РДФ-а.

Види још[уреди]

Референце[уреди]

  1. ^ Multiple (wiki). „Web application framework”. Docforge. Приступљено 19. 01. 2010. 
  2. ^ „CGI: Common Gateway Interface”. Архивирано из оригинала на датум 09. 04. 2009. Приступљено 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”. Архивирано из оригинала на датум 26. 09. 2007. Приступљено 29. 07. 2007. 
  6. ^ „What are the fundamental differences between Struts and JSF”. Struts.apache.org. 14. 02. 2011. Архивирано из оригинала на датум 08. 08. 2012. Приступљено 14. 06. 2013. 
  7. ^ Microsoft. „Three-tiered distribution”. Приступљено 19. 09. 2011. 
  8. ^ Oracle. „clustering_concepts_10en” (PDF). Приступљено 19. 09. 2011. 
  9. ^ Perkoski, Robert R. „Introduction to Web Development”. Приступљено 19. 09. 2011. 
  10. ^ IBM. „Using Client Access Express in a three tier environment”. Приступљено 19. 09. 2011. [мртва веза]
  11. ^ Oracle. „Understanding the Three-Tier Architecture”. Приступљено 19. 09. 2011. 
  12. ^ Microsoft. „Pragmatic Architecture: Layering”. Архивирано из оригинала на датум 10. 08. 2011. Приступљено 19. 09. 2011. 
  13. ^ Arokia. „3-Tier Web Architecture”. Архивирано из оригинала на датум 18. 07. 2012. Приступљено 19. 09. 2011. 
  14. ^ „ASP.NET MVC Controller Best Practices”. Приступљено 19. 09. 2011. 
  15. ^ Buck, Jamis. „Skinny Controller, Fat Model”. Приступљено 19. 09. 2011.