Webový framework - Web framework

Web framework ( WF ), nebo webový aplikační framework ( WAF ) je software rámec, který je určen k podpoře vývoje webových aplikací , včetně webových služeb, webové zdroje a webové rozhraní API . Webové rámce poskytují standardní způsob vytváření a nasazování webových aplikací na World Wide Web . Webové rámce mají za cíl automatizovat režii spojenou s běžnými aktivitami prováděnými při vývoji webu . Mnoho webových rámců například poskytuje knihovny pro přístup k databázi , šablony pro šablony a správu relací a často podporují opětovné použití kódu . Přestože se často zaměřují na vývoj dynamických webových stránek , jsou použitelné také na statické webové stránky .

Dějiny

Protože design World Wide Web nebyl ze své podstaty dynamický, raný hypertext sestával z ručně kódovaného HTML, který byl publikován na webových serverech . Jakékoli úpravy publikovaných stránek musí provést autor stránek. V roce 1993 byl zaveden standard Common Gateway Interface (CGI) pro propojení externích aplikací s webovými servery, který poskytuje dynamickou webovou stránku, která odráží vstupy uživatelů.

Původní implementace rozhraní CGI však obvykle měla nepříznivé účinky na zatížení serveru, protože každý požadavek zahájil samostatný proces . Novější implementace využívají mezi jinými technikami trvalé procesy, aby snížily stopu ve zdrojích serveru a nabídly obecné zvýšení výkonu.

V roce 1995 se poprvé objevila plně integrovaná vývojová prostředí server/jazyk a byly zavedeny nové webové jazyky, jako ColdFusion , PHP a Active Server Pages .

Ačkoli drtivá většina jazyků pro vytváření dynamických webových stránek má knihovny, které pomáhají s běžnými úkoly, webové aplikace často vyžadují specifické knihovny pro konkrétní úkoly, jako je vytváření HTML (například JavaServer Faces ).

Na konci devadesátých let se začaly objevovat vyspělé rámce s „plným zásobníkem“, které často shromažďovaly více knihoven užitečných pro vývoj webu do jednoho soudržného softwarového balíčku, který mohli používat weboví vývojáři. Mezi příklady patří ASP.NET , Java EE , WebObjects , web2py , OpenACS , Catalyst , Mojolicious , Ruby on Rails , Laravel , Grails , Django , Zend Framework , Sails.js , Yii , CakePHP a Symfony .

Typy rámcových architektur

Většina webových rámců jsou založeny na Model-View-Controller (MVC) vzoru .

Model -view -controller (MVC)

Mnoho rámců sleduje architektonický vzor MVC k oddělení datového modelu s obchodními pravidly od uživatelského rozhraní . To je obecně považováno za osvědčený postup, protože moduluje kód, podporuje opětovné použití kódu a umožňuje použití více rozhraní. Ve webových aplikacích to umožňuje prezentovat různá zobrazení, například webové stránky pro lidi a rozhraní webových služeb pro vzdálené aplikace.

Push-based vs. pull-based

Většina rámců MVC se řídí architekturou založenou na push, která se také nazývá „akční“. Tyto rámce používají akce, které provedou požadované zpracování, a poté „posunou“ data do vrstvy zobrazení k vykreslení výsledků. Django , Ruby on Rails , Symfony , Spring MVC , Stripes , Sails.js , CodeIgniter jsou dobrým příkladem této architektury. Alternativou k tomu je tahová architektura, někdy také nazývaná „komponentová“. Tyto rámce začínají zobrazovací vrstvou, která pak může podle potřeby „stahovat“ výsledky z více řadičů. V této architektuře lze do jednoho pohledu zapojit více řadičů. Lift , Tapestry , JBoss Seam , JavaServer Faces a Wicket jsou příklady tahových architektur. Play , Struts , RIFE a ZK mají podporu volání řadičů aplikací založených na push i pull.

Tříúrovňová organizace

V tříúrovňové organizaci jsou aplikace strukturovány kolem tří fyzických úrovní: klient, aplikace a databáze. Databáze je obvykle RDBMS . Aplikace obsahuje obchodní logiku, běží na serveru a komunikuje s klientem pomocí HTTP . Klient ve webových aplikacích je webový prohlížeč, který spouští HTML generované aplikační vrstvou. Termín by neměl být zaměňován s MVC, kde je na rozdíl od třívrstvé architektury považováno za vhodné udržovat obchodní logiku mimo řadič, „střední vrstvu“.

Rámcové aplikace

Rámce jsou vytvořeny tak, aby podporovaly konstrukci internetových aplikací založených na jediném programovacím jazyce, a to od nástrojů pro obecné účely, jako jsou Zend Framework a Ruby on Rails, které rozšiřují možnosti konkrétního jazyka, až po programovatelné balíky nativního jazyka postavené na konkrétní uživatelskou aplikaci, jako jsou systémy pro správu obsahu , některé nástroje pro mobilní vývoj a některé portálové nástroje.

Univerzální rámce webových stránek

Webové rámce musí fungovat podle architektonických pravidel prohlížečů a protokolů, jako je HTTP , který je bez státní příslušnosti . Webové stránky jsou obsluhovány serverem a poté je lze upravit pomocí prohlížeče JavaScript . Každý přístup má své výhody a nevýhody.

Změny na straně serveru obvykle vyžadují aktualizaci stránky, ale umožňují použití jakéhokoli jazyka a využití většího výpočetního výkonu. Změny na straně klienta umožňují aktualizaci stránky na malé části, které vypadají jako desktopová aplikace, ale jsou omezeny na JavaScript a běží v prohlížeči uživatele, který může mít omezený výpočetní výkon. Obvykle se používá nějaká kombinace těchto dvou. Aplikace, které intenzivně využívají JavaScript, se nazývají jednostránkové aplikace a k organizaci kódu obvykle využívají webový framework JavaScript na straně klienta.

Na straně serveru

Na straně klienta

Příklady zahrnují backbone.js , angularjs , hranatý , EmberJS , ReactJS a Vue.js .

Dash je open-source framework Python , R a Julia pro vytváření webových analytických aplikací . Stejný JavaScript (tj. Reagovat) se používá na straně klienta, nezávisle na jazyku back-end.

Diskusní fóra, wiki a weblogy

Funkce

Rámce obvykle nastavují řídicí tok programu a umožňují uživateli rámce „zapojit se“ do tohoto toku vystavením různých událostí. Tento návrhový vzor „ převrácení kontroly “ je považován za určující princip rámce a prospívá kódu prosazováním společného toku pro tým, který si každý může přizpůsobit podobným způsobem. Například některé populární „mikrorámce“, jako je Ruby's Sinatra (která inspirovala Express.js ), umožňují zavěšení „middlewaru“ před a po požadavcích HTTP. Tyto funkce middlewaru mohou být libovolné a umožňují uživateli definovat protokolování, ověřování a správu relací a přesměrování.

Systém webových šablon

Ukládání do mezipaměti

Web caching je caching z webových dokumentů s cílem snížit šířku pásma využití, serverové zátěže , a vnímané „ zpoždění “. Webová mezipaměť ukládá kopie dokumentů, které jimi procházejí; následující požadavky mohou být uspokojeny z mezipaměti, pokud jsou splněny určité podmínky. Některé aplikační rámce poskytují mechanismy pro ukládání dokumentů do mezipaměti a obcházení různých fází přípravy stránky, jako je přístup k databázi nebo interpretace šablon.

Bezpečnostní

Některé webové rámce se dodávají s ověřovacími a autorizačními rámci, které webovému serveru umožňují identifikovat uživatele aplikace a omezit přístup k funkcím na základě určitých definovaných kritérií. Drupal je jedním příkladem, který poskytuje přístup ke stránkám podle rolí a poskytuje webové rozhraní pro vytváření uživatelů a jejich přiřazování rolí.

Přístup k databázi, mapování a konfigurace

Mnoho webových rámců vytváří jednotné rozhraní API pro databázový server, což umožňuje webovým aplikacím pracovat s řadou databází bez změn kódu a umožňuje programátorům pracovat s koncepty vyšší úrovně. Některé objektově orientované rámce navíc obsahují mapovací nástroje pro objektově relační mapování , které mapuje objekty na řazené kolekce členů .

Některé rámce minimalizují konfiguraci webové aplikace pomocí introspekce a/nebo podle známých konvencí. Mnoho rámců Java například používá Hibernate jako vrstvu trvalosti, která může za běhu generovat schéma databáze schopné uchovat potřebné informace. To umožňuje návrháři aplikací navrhovat obchodní objekty, aniž by bylo nutné explicitně definovat databázové schéma. Rámce, jako je Ruby on Rails, mohou také pracovat obráceně, tj. Definovat vlastnosti objektů modelu za běhu na základě schématu databáze.

Mezi další funkce, které mohou webové rámce poskytovat, patří podpora transakcí a nástroje pro migraci databáze .

Mapování URL

Nástroj pro mapování nebo směrování adres URL rámce je mechanismus, pomocí kterého rámec interpretuje adresy URL. Některé rámce, jako například Drupal a Django, odpovídají poskytnuté adrese URL s předem určenými vzory pomocí regulárních výrazů , zatímco některé jiné používají techniky přepisování k překladu poskytnuté adresy URL do takové, kterou základní stroj rozpozná. Další technikou je procházení grafu , jaké používá Zope , kde se URL rozkládá v krocích, které procházejí objektovým grafem (modelů a pohledů).

Systém mapování adres URL, který ke směrování a vyřizování požadavků používá porovnávání vzorů nebo přepisování, umožňuje použití kratšíchpřátelských adres URL “, což zvyšuje jednoduchost webu a umožňuje lepší indexování vyhledávačů. Například adresu URL končící na „/page.cgi?cat=science&topic=physics“ lze jednoduše změnit na „/page/science/physics“. To usnadňuje lidem zapamatování, čtení a zápis adresy URL a poskytuje vyhledávačům lepší informace o strukturálním uspořádání webu. Přístup procházení grafem také obvykle vede k vytváření přátelských adres URL. Kratší adresa URL, například „/stránka/věda“, ve výchozím nastavení obvykle existuje, protože je to zkrátka kratší forma delšího přechodu na „/stránka/věda/fyzika“.

AJAX

Ajax , zkratka pro „ asynchronní JavaScript a XML “, je technika webového vývoje pro vytváření webových aplikací. Záměrem je zajistit, aby webové stránky reagovaly výměnou malého množství dat se serverem v zákulisí, aby se celá webová stránka nemusela znovu načítat pokaždé, když uživatel požaduje změnu. Účelem je zvýšit interaktivitu, rychlost a použitelnost webové stránky .

Vzhledem ke složitosti programování Ajaxu v JavaScriptu existuje mnoho rámců Ajax, které se zabývají výhradně podporou Ajaxu. Některé rámce Ajax jsou dokonce vloženy jako součást větších rámců. Například knihovna JavaScript jQuery je součástí Ruby on Rails.

S rostoucím zájmem o vývoj webových aplikací bohatých naWeb 2.0 “ se komplexnost programování přímo v Ajaxu a JavaScriptu stala natolik zřejmou, že do toho vstoupila technologie kompilátoru, která vývojářům umožňuje kódovat v jazycích na vysoké úrovni, jako jsou Java, Python a Rubín. Prvním z těchto kompilátorů byl Morfik, za nímž následoval Google Web Toolkit , s porty do Pythonu a Ruby ve formě Pyjs a RubyJS, které následovaly nějaký čas poté. Tyto kompilátory a jejich přidružené knihovny sad widgetů činí vývoj aplikací Ajax rich media mnohem více podobným vývoji desktopových aplikací.

webové služby

Některé rámce poskytují nástroje pro vytváření a poskytování webových služeb. Tyto nástroje mohou nabízet podobné nástroje jako zbytek webové aplikace.

Webové zdroje

Řada novějších rámců Web 2.0 RESTful nyní poskytuje infrastrukturu ROA ( Resource-Oriented Architecture ) pro vytváření sbírek zdrojů v jakési sémantické webové ontologii , založené na konceptech z RDF ( Resource Description Framework ).

Viz také

Reference