2. 2
Agenda
• Webové aplikace a jejich historie
• Výhody a nevýhody webových aplikací
• Vývoj webových aplikací
• Vývojové technologie
• Internet, doporučená literatura
3. 3
Co jsou webové aplikace?
• Wikipedia – „Webová aplikace je poskytovaná uživatelům z webového serveru přes
počítačovou síť Internet, nebo její vnitropodnikovou obdobu (Intranet).“
• Nejčastěji jde o společné označení pro webové stránky (statické i dynamicky
generované) s nějakou aplikační logikou.
• Pojem webová aplikace není striktně (normativně) vymezen!
• Mezi webové aplikace jsou často zařazovány i tzv. webové služby.
Zjednodušení
• Webové stránky jsou určeny pro běžného uživatele (BFU)
• Webové služby jsou určeny pro aplikace (i webové)
• Existuje celá řada technologií pro vývoj a provoz webových aplikací, které jsou nebo
budou využívány v prostředí Internetu/Intranetu. Bližší info na přednášce věnované
aktuálním trendům!
4. 4
Historie webových aplikací?
Do poloviny 90. let
• Statické webové stránky
• Text, obrázky
• Akademická sféra, odborná veřejnost
• Uživatelé mohou obsah webových stránek ovlivnit jen minimálně
Druhá polovina 90. let
• Dynamické webové stránky, webové služby (na přelomu století)
• Multimediální obsah
• Přístupné pro nejširší veřejnost
• Interaktivita s uživatelem
http://evolutionofweb.appspot.com/
5. 5
Dynamicky generované webové stránky
• Nejčastěji používají (X)HTML kód (+ CSS a JavaScript) jako rozhraní pro komunikaci
s uživatelem.
• Jsou postaveny na modelu klient/server.
• Na straně uživatele (klienta) je webový prohlížeč, na opačné straně je WWW server.
• Na rozdíl od „běžných“ statických WWW stránek je na straně serveru navíc přítomna
aplikační logika, která je schopná přesněji reagovat na specifické požadavky klientů,
což výrazně zvyšuje úroveň interaktivity s uživatelem.
Příklady
• Virtuální obchody (e-shopy)
• Katalogy a vyhledávací služby
• Redakční systémy (CMS)
• Komunitní weby (Facebook, Twitter a spol.)
• ASP (Application Service Provider), SaaS (Software as a Service) – hostování, pronájem
aplikací a služeb – Cloud computingu obecně budu věnovat pozornost na přednášce
o aktuálních trendech.
6. 6
Webové služby
• Jsou postaveny na modelu klient/server.
• Na straně klienta je většinou aplikace, která odpověď serveru dále zpracovává.
• Webové služby používají formát XML, ve kterém spolu klient a server komunikují (vlastní
komunikace zpravidla probíhá přes protokol HTTP/HTTPS).
• Prostřednictvím webových služeb je možné řešit komunikaci aplikací v heterogenním
prostředí, protože používaný formát (XML) a protokoly (SOAP, HTTP/HTTPS) jsou
dostatečně univerzální.
• Popis každé webové služby (dostupné metody a parametry) je k dispozici v XML formátu
(*.wsdl soubor).
• Webové služby je možné vytvářet na všech běžně používaných vývojových platformách
(Java, .NET, PHP).
• S čím dál výraznějším trendem vzájemného propojování existujících aplikací roste
význam technologií, které umožňují jejich integraci – tedy i webových služeb!
• Pozor, webové služby nemusí být vždy tím nejvhodnějším integračním řešením!
7. 7
Agenda
Webové aplikace a jejich historie
• Výhody a nevýhody webových aplikací
• Vývoj webových aplikací
• Vývojové technologie
• Internet, doporučená literatura
8. 8
Výhody webových aplikací
• Na straně klienta stačí webový prohlížeč, někdy s příslušným plug-inem (Flash,
Silverlight) – od nutnosti pluginů se ustupuje (nové možnosti HTML5)!
• Jednoduchá údržba – změny pouze na straně serveru
• Aktuálnost – každá úprava se okamžitě projeví (aplikační logika, data)
• Nižší nároky na HW klientů – stačí PC s webovým prohlížečem
• Nižší provozní náklady
• Nezávislost na platformě (OS) na straně klienta
• Přizpůsobení UI různým koncovým zařízením (od r. 2009 je 3x více přístupů z mobilů)
• Výborná dostupnost, možnost využití v lokální síti (Intranetu) i v Internetu (24/7)
9. 9
Nevýhody webových aplikací
• Nehodí se pro některé typy aplikací
• Vysoká závislost na poskytovateli aplikace
• Nemožnost práce v offline režimu (začíná se řešit – HTML5, Adobe Air)
• Omezené možnosti uživatelského rozhraní
• Omezené možnosti validace dat na straně klienta (webový prohlížeč)
• Nedokonalá podpora standardů (HTML, CSS, JavaScript) v prohlížečích
• Bez-stavová komunikace při použití protokolu HTTP/HTTPS (lze obejít)
• Množství přenášených dat (značkovací jazyk)
• Problémy s bezpečností (webový prohlížeč, dostupnost v Internetu)
10. 10
Agenda
Webové aplikace a jejich historie
Výhody a nevýhody webových aplikací
• Vývoj webových aplikací
• Vývojové technologie
• Internet, doporučená literatura
11. 11
Vývoj webových aplikací
• I pro webové aplikace platí tradiční vývojový cyklus...
Analýza * –> Implementace –> Testování * –> Nasazení * –> Provoz *
Jednotlivé fáze vývojového cyklu (*) může ovlivnit zákazník (zadavatel)!
• Při návrhu GUI aplikace je vhodné přesně specifikovat použité technologie a standardy
(Flash, JEN pro Internet Explorer… v intranetech stále přežívá IE6!).
• Trendem jsou tzv. Single Page Apps
• Webové aplikace mají, v porovnání s klasickými desktopovými a klient/server aplikacemi,
určité specifické požadavky
▫ Souběžný přístup velkého množství klientů –> rychlost odezvy,
▫ Protokol HTTP je bez-stavový –> nutnost použití session a cookies.
• Je třeba klást maximální důraz na testování a brát v úvahu rozdíly mezi testovacím
a skutečným provozem (HW, SW, konfigurace)!
12. 12
Možné přístupy k vývoji webových aplikací
Podle podmínek a okolností vzniku
• Vývoj na zelené louce (celý vývojový cyklus běží od začátku)
• „Překlopení“ již existující aplikace (s použitím reverzní analýzy)
Podle způsobu implementace
• Programováním
• Generováním (z databáze, z modelu (MDA) atd.)
• Oba způsoby implementace mají své výhody a nevýhody!
13. 13
Aplikační vrstvy
• Při návrhu webové aplikace je vhodné rozdělení do tzv. aplikačních vrstev
• Nejjednodušší (obecné) rozdělení:
Přístup k datům (persistence) – Aplikační (business) logika – Prezentační vrstva (UI)
Domain-Driven Design patterns:
1. User interface (Presentation Layer)
2. Application Layer
3. Domain Layer
4. Infrastructure and Technical Services Layer
http://davidhayden.com/blog/dave/archive/200
4/12/12/685.aspx
14. 14
Knihovny, frameworky
• Rozdělení aplikace do vrstev umožňuje (kromě dalších výhod) při vývoji využít
nejrůznější podpůrné knihovny a frameworky, které mohou výrazně zjednodušit
a zefektivnit vývoj, např.
▫ Přístup k datům (v databázi, ve file systému, různé formáty apod.)
▫ ORM (Object Relational Mapping),
▫ Automatizované testování (unit testy),
▫ Autentizaci uživatelů.
• Příklad některých používaných knihoven a frameworků
▫ Java – JDO, Spring, JUnit, Hibernate (ORM)
▫ .NET – ADO.NET, NUnit, EF, LINQ, NHibernate (ORM), Spring.NET, ASP.NET MVC
▫ PHP – PEAR, Smarty, FastTemplates, Nette, Zend
15. 15
Chyby při vývoji webových aplikací – I.
• Je závažnou (a bohužel obvyklou) chybou programovat webové aplikace jako
jednouživatelské
• Při návrhu aplikace se nepočítá s jejím budoucím rozvojem/rozšířením, integrací
s dalšími aplikacemi nebo rostoucím zatížením (více uživatelů)
• Živelný vývoj – často se začne programovat bez dostatečné analýzy nebo bez komunikace
se zákazníkem (chybí prototyp UI apod.)
• Uživatelům se nabízí zbytečně složité a nepřehledné ovládání
• Vývojové, testovací a provozní prostředí aplikace mají často rozdílnou konfiguraci
(liší se verze použitého SW, nastavení parametrů apod.)
• Podceňuje se fáze testování (funkční, integrační, zátěžové), nepoužívá se TDD (unit testy)
• Neoddělují se jednotlivé aplikační vrstvy (data – business – user inteface)
• Objevují se zbytečné duplicity v programovém kódu
• Znovu se vynalézá kolo –> nepoužívají se vzory (design patterns), best practice
• Ignorují se základní bezpečnostní pravidla pro přístup k aplikacím a k datům
16. 16
Chyby při vývoji webových aplikací – II.
• Programují se funkce, která uživatel nepotřebuje nebo nevyužívá (řada z nich není v UI
vůbec vidět)
• UI je složitý, nepřehledný, často s nestandardním ovládáním
• Netestují se vstupní data od uživatelů (uživatel = neřízená střela)
• Zůstávají neukončená připojení k databázi
• Je špatně navržená struktura databáze, chybí indexy apod.
• Používají se neoptimalizované SQL dotazy, často bez parametrů
• Není ošetřena souběžná modifikace dat
• Není ošetřen opakovaný zápis dat (F5, obnovení stránky)
• Nejsou správně nebo vůbec ošetřeny výjimky (chyby)!
• Nevyužívá se vyrovnávací buffer při generování odpovědi
• Nevyužívá se kešování (cache) stránek při opakovaných požadavcích
• Při objektovém programování se chybně pracuje s kolekcemi
• Programátor po sobě „neuklízí“ v paměti, spoléhá na GC nebo na zázrak
• http://zdrojak.root.cz/clanky/programator-prestava-byt-amater-kdyz/
17. 17
Agenda
Webové aplikace a jejich historie
Výhody a nevýhody webových aplikací
Vývoj webových aplikací
• Vývojové technologie
• Internet, doporučená literatura
18. 18
Volba technologie
• Volbu technologie ovlivňuje řada faktorů, např.
▫ Použitá platforma (OS, aplikační server, databáze)
▫ Požadavky na bezpečnost
▫ Zvyk (zadavatel, dodavatel), obchodně-politické vlivy
▫ Dostupnost know–how na straně dodavatele
▫ Cena řešení
• Použitá technologie může výrazně ovlivnit rychlost (odezvu) webové aplikace směrem
ke klientovi (ASP/ASP.NET –> až 3x větší rychlost ASP.NET).
• Volba vhodné technologie ještě nezaručuje dobrý výsledek!
19. 19
Technologie používané u webových aplikací
Na straně klienta
• HTML formuláře
• CSS, DHTML, XSLT
• Klientské skripty (JavaScript, VB.Script)
• Java aplety, ActiveX
• Flash/Flex, Silverlight, AJAX a další technologie ze skupiny RIA
Na straně serveru
• Interpretované (např. Perl, ASP, PHP, Python, Ruby)
• Částečně kompilované (JEE, ASP.NET)
• Kompilované (CGI skripty)
20. 20
Používané technologie z hlediska historie
Časová osa
• Pravěk – HTML formuláře a CGI skripty,
• Středověk – Perl, ASP, JSP, PHP, Java Aplety, ActiveX,
• Dnes – AJAX (HTML + JavaScript), JEE (J2EE), ASP.NET, Ruby (on Rails), Python (Django),
Silverlight, Flex atd.
• Na straně klienta (prohlížeče) je, a v nejbližší době bude, nejdůležitější kombinace
HTML5 + JavaScript + CSS3. Bez ohledu na technologie použité na straně serveru!
• Výhledově HTML5 může nahradit nativní aplikace, ale nebude to hned!
• Rozšířenost vybrané technologie ještě automaticky neznamená její kvalitu!
• Infografika: http://sixrevisions.com/infographs/what-websites-madeof/
• Technologie, které používají aktuálně největší světové weby…
http://royal.pingdom.com/?p=173
http://natishalom.typepad.com/nati_shaloms_blog/2007/10/why-most-scalab.html
21. 21
Agenda
Webové aplikace a jejich historie
Výhody a nevýhody webových aplikací
Vývoj webových aplikací
Vývojové technologie
• Internet, doporučená literatura
23. 23
Doporučená literatura
• Martin, C. Robert – Čistý kód – Návrhové vzory, refaktorování, testování a další techniky
agilního programování , Computer Press 2009
• Pecinovský, Rudolf – Návrhové vzory – 33 vzorových postupů pro objektové
programování, Computer Press 2007
• Pecinovský Rudolf – OOP – Naučte se myslet a programovat objektově, Computer Press
2010
• Earl Thomas – SOA Servisně orientovaná architektura, Computer Press 2009
• MacDonald, Matthew; Szpuszta, Mario – ASP.NET 3.5 a C# 2008, Zoner Press 2008
• Watson, Ben – C# 4.0 – řešení praktických programátorských úloh, Zoner Press 2010
• Macháček, Jan; Vukotic, Alexa; Chakraborty, Anirvan; Ditt Jessica – Pro Spring 3, Apress
2009
• Microsoft – Vytváříme zabezpečené aplikace v Microsoft ASP.NET,
CP Books (Computer Press) 2004
• Taylor, Art; Buege Brian; Layman Randy – Hacking bez tajemství: Java a J2EE,
Computer Press 2003
• Huseby, Sverre H. – Zranitelný kód, Computer Press 2006
24. 24
Souhrn
Webové aplikace a jejich historie
Výhody a nevýhody webových aplikací
Vývoj webových aplikací
Vývojové technologie
Internet, doporučená literatura