Веб-фрејмворк

(преусмерено са Веб-оквир)

Веб-фрејмворк (енгл. web application framework, 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-базирани уреди

Многи MVC фрејмворци прате push-базирану архитектуру такође названу и као "action-базирана". Ови фрејмворци користе акције које одрађују неопходну обраду, а затим "гурају" податак на слој прегледа да би се резултати обрадили.[5] Django, Ruby on Rails, Symfony, Spring MVC, Stripes, CodeIgniter[6] су добри примери ове архитектуре. Алтернатива овоме је pull-базирана архитектура, понекад такође названа "component-базирана". Ови фрејмворци почиљу са слојем прегледа, који може затим "повући" резултате из вишеструких контролора по потреби. У овој архитектури, вишеструки контролори могу бити укључени у један преглед. Lift, Tapestry, JBoss Seam, JavaServer Faces, (µ)Micro Архивирано на сајту Wayback Machine (26. септембар 2015), и 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, омогућавају објектно-оријентисани MVC фрејмворк. Модули додатака сада дозвољавају овим системима да функционишу као пуноправне апликације изван обима управљања садржаја. Могу омогућавати функционалне АПИ-е, функционалне фрејмворке, стандарде кодирања, и многе функције традиционално повезане са веб-фрејмворцима.

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

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

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

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

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

Неки фрејмворци веб прилога долазе са прилозима аутентификације и ауторизације, који омогућавају веб серверу да идентификује кориснике апликације, и ограниче приступ потпрограмима на основу неког дефинисаног услова. 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. Архивирано из оригинала 16. 10. 2018. г. Приступљено 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”. Архивирано из оригинала 11. 10. 2011. г. Приступљено 19. 09. 2011. 
  15. ^ Buck, Jamis. „Skinny Controller, Fat Model”. Приступљено 19. 09. 2011.