Moderní Rámce Pro Tvorbu Webových Aplikací
Total Page:16
File Type:pdf, Size:1020Kb
MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨ AKULTA INFORMATIKY !"#$%&'()+,-./012345<yA| Moderní rámce pro tvorbu webových aplikací DIPLOMOVÁ PRÁCE Jakub Mahdal Brno, jaro 2006 Prohlášení Prohlašuji, že tato diplomová práce je mým p ˚uvodnímautorským dílem, které jsem vypra- coval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování použí- val nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj. Vedoucí práce: Mgr. Jan Pavloviˇc ii Podˇekování Chtˇelbych podˇekovatvedoucímu práce Mgr. Janu Pavloviˇcoviza podklady a pˇripomínky k mé diplomové práci. iii Shrnutí Cílem této práce je seznámit se s technologiemi pro tvorbu webových aplikací. Provést analýzu webových rámc ˚u- Apache Struts, JSF, MFC, ADF, WebWork, Maverick, Springs, Cocoon, Jakarta Tapestry, Turbine, Lakeshore, FreeMaker, Stripes, Rife, Ruby on Rails. Po- psat jejich vlastnosti a navrhnout kritéria pro hodnocení použitelnosti a zejména pro volbu vhodné technologie. iv Klíˇcováslova Webová aplikace, webový rámec, framework, Model-View-Controller, MVC, Apache Struts, JSF, MFC, ADF, WebWork, Maverick, Springs, Cocoon, Jakarta Tapestry, Turbine, Lakeshore, FreeMaker, Stripes, Rife, Ruby on Rails v Obsah 1 Architektura software a webové aplikace ........................ 2 1.1 Architektura software ................................ 3 1.1.1 Architektura mainfram ˚u. 3 1.1.2 Architektura sdílených soubor ˚u(není ještˇepovažováno za klient-server) 3 1.1.3 Architektura klient-server . 4 1.1.4 Dvouvrstvá architektura . 4 1.1.5 Tˇrívrstváarchitektura . 4 1.2 Servisnˇeorientovaná architektura (SOA) ...................... 5 1.3 Modelovˇeˇrízenáarchitektura (MDA) ....................... 5 1.4 WEB 2.0 - smˇervývoje webu? ............................ 7 2 Tvorba webových aplikací ................................ 9 2.1 Rámce pro tvorbu webových aplikací ....................... 9 2.2 Koncept MVC ..................................... 10 2.2.1 Model . 10 2.2.2 View . 11 2.2.3 Controller . 11 2.3 Rozdˇeleníwebových rámc ˚u ............................. 12 2.4 Rich Internet Application (RIA) ........................... 12 3 Rámce pro tvorbu webových aplikací .......................... 14 3.1 Kritéria pro výbˇeraplikaˇcníhorámce ........................ 14 3.2 Srovnávané aplikaˇcnírámce ............................. 16 4 Srovnání rámc ˚upro vývoj zejména webových aplikací ............... 18 4.1 Apache Struts ..................................... 18 4.1.1 Životní cyklus . 18 4.1.2 Srovnávací kritéria . 19 4.2 WebWork ........................................ 21 4.2.1 Životní cyklus . 21 4.2.2 Srovnávací kritéria . 23 4.3 JSF - Java Server Faces ................................ 25 4.3.1 Životní cyklus . 25 4.3.2 Srovnávací kritéria . 26 4.4 MyFaces ........................................ 28 4.5 ADF - Application development framework ................... 28 4.6 Maverick ........................................ 28 4.6.1 Životní cyklus . 29 4.6.2 Srovnávací kritéria . 29 4.7 Spring ......................................... 31 4.7.1 Životní cyklus . 31 4.7.2 Srovnávací kritéria . 33 4.8 Apache Cocoon .................................... 34 vi 4.8.1 Životní cyklus . 35 4.8.2 Srovnávací kritéria . 35 4.9 Jakarta Tapestry .................................... 36 4.9.1 Životní cyklus . 37 4.9.2 Srovnávací kritéria . 37 4.10 Turbine ......................................... 38 4.10.1 Životní cyklus . 39 4.10.2 Srovnávací kritéria . 39 4.11 Lakeshore ....................................... 40 4.11.1 Životní cyklus . 41 4.11.2 Srovnávací kritéria . 41 4.12 Freemarker ....................................... 42 4.13 Stripes ......................................... 42 4.13.1 Životní cyklus . 43 4.13.2 Srovnávací kritéria . 43 4.14 RIFE ........................................... 44 4.14.1 Životní cyklus . 45 4.14.2 Srovnávací kritéria . 45 4.15 Ruby on Rails ..................................... 47 4.15.1 Životní cyklus . 48 4.15.2 Srovnávací kritéria . 48 5 Praktická ˇcást ........................................ 51 5.1 UML .......................................... 51 5.1.1 Specifikace požadavk ˚u. 51 5.1.2 Pˇrípadyužití . 52 5.1.3 Diagram tˇríd . 52 5.2 WebWork a Freemarker ................................ 52 5.2.1 Model . 53 5.2.2 Controller . 54 5.2.3 View . 54 5.3 Ruby on Rails ..................................... 55 5.3.1 Controller . 56 5.3.2 Model . 56 5.3.3 View . 57 5.4 Srovnání výsledných ˇrešení ............................. 57 6 Výbˇervhodného rámce .................................. 59 7 Závˇer ............................................. 60 A Obsah pˇriloženéhoCD .................................. 61 Literatura . 63 vii Úvod V posledních nˇekolikaletech zažívá internet obrovský rozvoj. Stal se dostupnˇejšíma rozší- ˇrenˇejším,pˇresunulase sem spousta informaˇcníchzdroj ˚ui obchodních aktivit. Tento rozvoj provází stále se zvyšující nároky na webové aplikace, které souˇcasnˇeurˇcujítrendy vývoje tohoto typu software. Zaužívané koncepce ve vývoji software se pˇresunujído webového prostˇredí,kde se více ˇciménˇeosvˇedˇcují,pˇrípadnˇevznikají na jejich základˇeúplnˇenové pˇrístupya architektury. Cílem této práce je seznámit se s technologiemi pro tvorbu webových aplikací. Mˇeli bychom provést bližší rozbor patnácti reprezentant ˚ua navrhnout kritéria pro hodnocení použitelnosti a zejména pro volbu vhodné technologie pro vývoj aplikací. V závˇeru se po- kusíme definovat strategii udržitelného rozvoje software založeného na webových rámcích. První kapitola se vˇenujehistorii softwarových architektur a jejich návazností na webové aplikace. Následující kapitola vysvˇetlujefunkci webového rámce jako základního kamene webové aplikace. Popisuje jednotlivé ˇcásti,myšlenky, ze kterých jeho koncepce vychází a kritéria, podle kterých je možné rámce rozdˇelovat. Ve tˇretíkapitole se pokusíme definovat hodnotící kritéria, podle nichž budeme jednotlivé rámce srovnávat. Krátce si také pˇredstavímekonkrétní technologie, které se budou našeho srovnání úˇcastnit. Souˇcástípráce je praktická ˇcást,kde jsou pˇredvedenyrealizace funkˇcníchaplikací po- stavené na vybraných rámcích a popsán postup jejich vývoje. Praktická ˇcástobsahuje také zhodnocení celého vývojového procesu spolu s porovnáním jednotlivých realizací. Problematice, kterou se budeme zabývat, se již pˇrednámi vˇenovalinapˇríkladMatt Raible ze skupiny Virtuas nebo další vývojáˇri,jejichž práce jsou k dispozici na internetu. Tato práce se snaží o komplexnˇejšípohled ve smyslu vˇetšíhopoˇctusrovnávaných rámc ˚u,navržení výbˇerových kritérií a také vytvoˇreníukázkových aplikací. Práce byla pˇripravenave formátu XML s využitím DTD DocBook a modulu xslt2. Závˇe- reˇcnásazba byla provedena typografickým systémem LaTEX. Dˇekujitímto Mgr. Janu Pav- loviˇcoviza vytvoˇrenía údržbu modulu xslt2. 1 Kapitola 1 Architektura software a webové aplikace Tato práce se vˇenujesrovnání technologií pro podporu tvorby webových aplikací, pokusme se tedy nejdˇrívedefinovat, co to webová aplikace vlastnˇeje. Webová aplikace je obecnˇesoftware, který bˇežív prostˇredíinternetu nebo intranetu. Je postavena na modelu klient-server a na klienta neklade v podstatˇejiné nároky než imple- mentaci protokolu HTTP. Klientem je tedy obvykle internetový prohlížeˇca v pˇrípadˇeau- tomatizovaných pˇrístup˚ujsou to tzv. HTTP agenti, napˇríkladroboti fulltextových vyhledá- vaˇc˚unebo v tom negativnˇejšímpojetí roboti sbírající e-mailové adresy ze stránek za úˇcelem rozesílání spamu. Jednou z pˇríˇcinvzniku webových aplikací byla snaha poskytovat a využívat funkce a možnosti již existujících softwarových aplikací bez nutnosti složité a nákladné distribuce a kopírování na klientský poˇcítaˇc.Také cena uchovávání a údržby starších, ale stále použí- vaných verzí software, hraje v rozšíˇreníwebových aplikací nemalou roli - jejich rozvoj je tedy úzce svázán s tlakem ekonomické stránky softwarového pr ˚umyslu.Ten m ˚užebýt ve formˇepˇríméminimalizace náklad ˚uze softwarového pohledu - vˇetšírychlost vývoje, mno- honásobnˇevˇetšírychlost nasazení do provozu (zprovozní se pouze na serveru a všichni klienti aplikaci mohou automaticky používat), rychlejší pˇrizp˚usobenízmˇenáma požadav- k ˚umtrhu. V neposlední ˇradˇetaké již zmínˇenéudržování starších verzí software, které je pˇri vˇetšímmnožství verzí velmi drahé. Z osobní zkušenosti bych to oznaˇcildokonce za jednu z nejvýznamnˇejšíchpoložek ceny software. Nepˇrímýmináklady, které se webovým aplika- cím daˇríminimalizovat, mohou být ceny za distribuci software, instalaci u zákazník ˚ua také zákaznická podpora. Webové aplikace se s rozvojem internetu dostávají stále více do popˇredía z p ˚uvodních jednoduchých poˇcítadela knih návštˇevna webových stránkách se dnes setkáváme s kom- plexními internetovými obchody, specializovanými portály, publikaˇcnímisystémy a robust- ními bankovními aplikacemi. Ergonomické nevýhody související s povahou klienta (internetového prohlížeˇce)a request/ response zp ˚usobkomunikace - prostˇredíprohlížeˇceneumožˇnujepohodlnou práci s wy- siwyg, drag and drop nástroji - vyvažují webové aplikace z ˇcástiskriptováním na stranˇe klienta - JavaScript, VisualBasicScript, apod. - kdy umožˇnujívalidovat formuláˇrovádata pˇredodesláním na server a pomáhat napˇríklad s dílˇcímivýpoˇcty. Výrazné pˇrednostitohoto konceptu jsou zase naopak platformní nezávislost a jednoduchost použití. K vývoji webových aplikací je možné použít nejr ˚uznˇejšíchtechnologií, které na sv ˚ujvý- stup vygenerují HTML nebo XHTML kód. Na serveru je vyžadován webový kontejner - 2 1.1. ARCHITEKTURA SOFTWARE software,