SlideShare a Scribd company logo
1 of 31
TNPW2
2012/2013
02 – Webové aplikace


Mgr. Lukáš Vacek
lukas.vacek@uhk.cz
2




Agenda


         •   Webové aplikace a jejich historie
         •   Výhody a nevýhody webových aplikací
         •   Jak webová aplikace funguje?
         •   Vývoj webových aplikací
         •   Vývojové technologie
         •   Internet, doporučená literatura
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 (* vysvětlím)

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

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

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 >> dotaz/odpověď
• 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á reaguje 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)
• Sociální sítě (Facebook, Twitter a spol.)
• ASP (Application Service Provider), SaaS (Software as a Service) –
   hostování, pronájem aplikací a služeb
6

Webové služby

• Model 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)
• Pomocí 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




Agenda


          Webové aplikace a jejich historie
         • Výhody a nevýhody webových aplikací
         • Jak webová aplikace funguje?
         • Vývoj webových aplikací
         • Vývojové technologie
         • Internet, doporučená literatura
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 (exponenciálně roste počet
  přístupů z mobilů)
• Výborná dostupnost, využití v lokální síti (Intranetu) i v Internetu (24/7)
9

Nevýhody webových aplikací

•   Nehodí se pro některé typy aplikací
•   Vysoká závislost na poskytovateli aplikace
•   Roadmapa aktualizací nemusí vyhovovat všem klientům (viz. nasazení Office)
•   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




Agenda


          Webové aplikace a jejich historie
          Výhody a nevýhody webových aplikací
         • Jak webová aplikace funguje?
         • Vývoj webových aplikací
         • Vývojové technologie
         • Internet, doporučená literatura
11

Komunikace klient/server

• Webová aplikace je postavena na modelu klient/server
• Na straně klienta je obvykle vizuální rozhraní aplikace (User Interface, frontend)
   ▫ HTML + CSS + JavaScript (nejčastější případ)
   ▫ Flash/Flex
   ▫ Silverlight…
• Na straně webového serveru (backend) je aplikační logika, datové úložiště atd.
   ▫ Část aplikační logiky může být i na klientovi (JavaScript)!

• Obvykle se ke komunikaci využívá protokol HTTP/HTTPS (port 80, resp. 443)

• Klientským zařízením nemusí být jen stolní počítač!
12

Synchronní a asynchronní komunikace

• Synchronní komunikace
  ▫   Je (zatím) častější
  ▫   Dotaz klienta + odpověď serveru (znáte ze statických webů)
  ▫   Iniciátorem komunikace je vždy klient (webový prohlížeč)
  ▫   Aktuálnost informací má určité zpoždění (až když se klient zeptá)

• Asynchronní komunikace
  ▫   Má permanentně otevřený komunikační kanál
  ▫   Oboustranná komunikace mezi serverem a klienty
  ▫   Využívá se v tzv. realtime aplikacích (online chat, kurzy akcií apod.)
  ▫   Podpora v různých technologiích, nejznámější asi AJAX, web socket apod.


• Metody komunikace v HTML5
• SignalR: Realtime web v ASP.NET (Michal „Altair“ Valášek)
13




Agenda


          Webové aplikace a jejich historie
          Výhody a nevýhody webových aplikací
          Jak webová aplikace funguje?
         • Vývoj webových aplikací
         • Vývojové technologie
         • Internet, doporučená literatura
14

Vývoj webových aplikací

• 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
  ▫ Různá koncová zařízení, snaha o co nejmenší datový traffic (odezva, peníze)

• Při návrhu GUI aplikace je vhodné přesně specifikovat použité technologie a
  standardy (ve firemních intranetech stále přežívá IE6!)

• 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)!
15

Požadavky na (webový) projekt – I.

Motto: „Když něco nemůžete změřit, nemůžete to ani řídit“ – Peter Drucker

• Požadavky na informační systém určuje business!
  ▫ Zohlednit potřeby zákazníka, jejich pokrytí funkcionalitou systému
  ▫ Měřit přínos jednotlivých požadavků (ROI, TCO) – vyplatí se to, za jakých podmínek?
  ▫ Návrh architektury musí být v rovnováze – business/technologie – z krátkodobého
    i dlouhodobého hlediska!
  ▫ Náklady ovlivňují zvolené technologické řešení
  ▫ Důležitá je zpětná vazba do businessu v průběhu všech etap řešení

• Kvalita výstupu je přímo úměrná kvalitě vstupních informací
  ▫ Implementace řešení, odhady pracnosti, náklady, termíny, pokrytí požadavků

• Kvantifikujte požadavky
  ▫ Obecné pojmy (např. rychle, flexibilně, rozšířitelně) nemají jednoznačný výklad
  ▫ Upřesněte, co konkrétní požadavek znamená? (např. Průměrná doba odezvy je… )
16

Požadavky na (webový) projekt – II.

• Komunikace je králem!
  ▫ Efektivní komunikace je klíčem k úspěšnému projektu
  ▫ Musíte být schopni vysvětlit své návrhy/nápady pokud možno stručně – stostránkový
    dokument (skoro) nikdo nečte! Hlavně ne zákazník 
  ▫ Nebojte se používat názorné obrázky, buďte srozumitelní
  ▫ Vždy musíte vědět, kdo je vaše publikum… komu prezentujete/vysvětlujete

• Pozor! Ne vždy je splnění všech zadaných požadavků možné
  ▫ Odporující si požadavky, termíny, cena, technologie, další omezení…

• Pečlivě vše dokumentujte (požadavky i návrh architektury)
  ▫ Co, kdo, kdy, proč, jaká omezení?
  ▫ Jedině s dokumentací lze rozhodnout, je-li dodávané řešení v souladu s požadavky
  ▫ Kvalitní dokumentace zjednodušuje provoz a případný další rozvoj systému
17

Příklady obvyklých požadavků a potřeb uživatelů

• Koncový uživatel – intuitivní a správné
  chováním, výkon, spolehlivost, použitelnost, dostupnost a bezpečnost
• Administrátor – přehlednost chování, jednoduchost správy, nástroje pro
  monitorování provozu
• Pracovník businessu – konkurenceschopné funkce, co nejkratší dobu pro
  uvedení do provozu, porovnání s konkurenčními produkty/službami a cenou
• Zákazník – zajímá ho cena, stabilita a termín dodání
• Vývojář – očekává jasně specifikované požadavky, a jednoduchý, konzistentní
  přístup k dobře zdokumentovanému návrhu, snadné provádění změn
• Projektový manažer – vyžaduje předvídatelnost při sledování
  projektu, termínů, rozpočtů a možnost produktivního využití zdrojů

Zdroj: Monson-Haefel, Richard – 97 klíčových znalostí softwarového architekta
18

Testování (webových) aplikací

• Je třeba klást maximální důraz na testování (nejlépe automatizované) a brát
  v úvahu rozdíly mezi testovacím a skutečným provozem
  (HW, SW, konfigurace)!

• Existují různé druhy (automatických) testů
  ▫ Funkční, integrační, zátěžové, unit testy apod.

• Při opakovaném použití (iterace) přináší automatické testování výraznou úsporu
  času a lidských zdrojů (kapacit)… snižuje náklady na projekt!

• „Automatizace snižuje pravděpodobnost, že uděláme při zadávání chybu, ale
  zvyšuje pravděpodobnost, že na něco zapomeneme“ – Michael Nygard

• Začněte měřit výkon systému (nebo jeho části) co nejdříve
  ▫ Agilní metodiky: Výkonnostní testy nejpozději od 3. iterace (1 iterace = cca 2-4 týdny)
  ▫ Pozdějším nasazením se připravíte o možnost identifikovat, jaká změna měla za
    následek případné problémy s výkonem
19

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!
20

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
21

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

• Používání frameworků je trend!
22

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
• Programují se funkce, která uživatel nepotřebuje nebo nevyužívá (řada z nich není v UI
  vůbec vidět)
• Ignorují se základní bezpečnostní pravidla pro přístup k aplikacím a k datům
23

Chyby při vývoji webových aplikací – II.
•   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řenáší se zbytečně velké množství dat mezi serverem a klientem (pozor na mobily!)
•   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/
24




Agenda


          Webové aplikace a jejich historie
          Výhody a nevýhody webových aplikací
          Jak webová aplikace funguje?
          Vývoj webových aplikací
         • Vývojové technologie
         • Internet, doporučená literatura
25

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!
26

Technologie používané u webových aplikací

Na straně klienta
• HTML formuláře
• CSS, DHTML, XSLT
• Klientské skripty (JavaScript, dříve i 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*)


Hvězdičkou (*) jsou označené zastaralé nebo jinak problematické technologie
27

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
28




Agenda


          Webové aplikace a jejich historie
          Výhody a nevýhody webových aplikací
          Jak webová aplikace funguje?
          Vývoj webových aplikací
          Vývojové technologie
         • Internet, doporučená literatura
29

Odkazy na Internetu
•   http://www.kosek.cz/php/index.html (PHP)
•   http://www.asp.net/ (ASP.NET)
•   http://java.sun.com/javaee/index.jsp (Java/JEE)
•   http://java.sun.com/javaee/javaserverfaces/ (Java/JSF)
•   http://www.hibernate.org/ (ORM)
•   http://nhibernate.sourceforge.net/ (ORM)
•   http://www.smarty.net/ (PHP framework)
•   http://www.ruby-lang.org/en/ (Ruby)
•   http://tomas-net.blogspot.com/2006/04/souboj-tlust-tenk-aplikace.html
•   http://zdrojak.root.cz/clanky/prezentacni-vzory-zrodiny-mvc/
•   http://www.root.cz/zpravicky/jak-zrychlit-web/
•   http://zdrojak.root.cz/clanky/jak-zrychlit-server-nekolik-praktickych-postrehu/
•   http://zdrojak.root.cz/clanky/single-page-apps-a-reseni-problemu-s-historii/
•   http://zdrojak.root.cz/clanky/mobilizujeme-web-v-html5/
•   http://www.netmagazine.com/features/future-css-layouts
•   http://www.zdrojak.cz/clanky/metody-komunikace-v-html5/
•   http://www.youtube.com/watch?v=vPXK82CayYE&feature=plcp (video přednášky o cache)
30

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
31




Souhrn


          Webové aplikace a jejich historie
          Výhody a nevýhody webových aplikací
          Jak webová aplikace funguje?
          Vývoj webových aplikací
          Vývojové technologie
          Internet, doporučená literatura

More Related Content

What's hot (16)

TNPW2-2014-03
TNPW2-2014-03TNPW2-2014-03
TNPW2-2014-03
 
TNPW2-2013-05
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
 
TNPW2-2016-07
TNPW2-2016-07TNPW2-2016-07
TNPW2-2016-07
 
TNPW2-2011-04
TNPW2-2011-04TNPW2-2011-04
TNPW2-2011-04
 
TNPW2-2014-06
TNPW2-2014-06TNPW2-2014-06
TNPW2-2014-06
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
TNPW2-2016-06
TNPW2-2016-06TNPW2-2016-06
TNPW2-2016-06
 
TNPW2-2012-07
TNPW2-2012-07TNPW2-2012-07
TNPW2-2012-07
 
TNPW2-2014-04
TNPW2-2014-04TNPW2-2014-04
TNPW2-2014-04
 
TNPW2-2012-06
TNPW2-2012-06TNPW2-2012-06
TNPW2-2012-06
 
TNPW2-2012-05
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05
 
TNPW2-2013-01
TNPW2-2013-01TNPW2-2013-01
TNPW2-2013-01
 
TNPW2-2013-04
TNPW2-2013-04TNPW2-2013-04
TNPW2-2013-04
 
TNPW2-2012-08
TNPW2-2012-08TNPW2-2012-08
TNPW2-2012-08
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
Přístupnost webů knihoven - příklady dobré a špatné praxe
Přístupnost webů knihoven - příklady dobré a špatné praxe Přístupnost webů knihoven - příklady dobré a špatné praxe
Přístupnost webů knihoven - příklady dobré a špatné praxe
 

Similar to TNPW2-2013-02

Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Sun Marketing
 
Webová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsWebová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsSun Marketing
 
Webová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérWebová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérSun Marketing
 
Co sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuCo sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuAkce Dobrého webu
 
Semináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datSemináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datJaroslav Prodelal
 
Efektivní online prezentace
Efektivní online prezentaceEfektivní online prezentace
Efektivní online prezentaceIvo Kylián
 
Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API? Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API? Petr Dvorak
 
Poskytování aplikací z cloudu
Poskytování aplikací z clouduPoskytování aplikací z cloudu
Poskytování aplikací z clouduJaroslav Smarda
 
Jak na BYOD chytře?
Jak na BYOD chytře?Jak na BYOD chytře?
Jak na BYOD chytře?www.embt.cz
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptCtvrtkoncz
 
Daniel Steigerwald: Jak psát mobilní webové aplikace
Daniel Steigerwald: Jak psát mobilní webové aplikaceDaniel Steigerwald: Jak psát mobilní webové aplikace
Daniel Steigerwald: Jak psát mobilní webové aplikaceDevelcz
 

Similar to TNPW2-2013-02 (20)

TNPW2-2014-01
TNPW2-2014-01TNPW2-2014-01
TNPW2-2014-01
 
Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)Webová prezentace - case study - DHL Express (Slovakia)
Webová prezentace - case study - DHL Express (Slovakia)
 
TNPW2-2011-08
TNPW2-2011-08TNPW2-2011-08
TNPW2-2011-08
 
TNPW2-2012-01
TNPW2-2012-01TNPW2-2012-01
TNPW2-2012-01
 
Webová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris ConsultantsWebová prezentace - case study - Squaris Consultants
Webová prezentace - case study - Squaris Consultants
 
Webová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiérWebová prezentace - case study - Ibis interiér
Webová prezentace - case study - Ibis interiér
 
Co sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webuCo sledovat a jak měřit u mobilního webu
Co sledovat a jak měřit u mobilního webu
 
Semináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních datSemináře M-Files: Konec hledání řešení pro správu firemních dat
Semináře M-Files: Konec hledání řešení pro správu firemních dat
 
Efektivní online prezentace
Efektivní online prezentaceEfektivní online prezentace
Efektivní online prezentace
 
Smact a průmysl 4.0
Smact a průmysl 4.0Smact a průmysl 4.0
Smact a průmysl 4.0
 
TNPW2-2013-03
TNPW2-2013-03TNPW2-2013-03
TNPW2-2013-03
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API? Jak vypadá ideální bankovní API?
Jak vypadá ideální bankovní API?
 
CSAS_v06
CSAS_v06CSAS_v06
CSAS_v06
 
Poskytování aplikací z cloudu
Poskytování aplikací z clouduPoskytování aplikací z cloudu
Poskytování aplikací z cloudu
 
Základy internetu
Základy internetuZáklady internetu
Základy internetu
 
TNPW2-2011-01
TNPW2-2011-01TNPW2-2011-01
TNPW2-2011-01
 
Jak na BYOD chytře?
Jak na BYOD chytře?Jak na BYOD chytře?
Jak na BYOD chytře?
 
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScriptČtvrtkon #71 - Marian Benčat - Angular a NativeScript
Čtvrtkon #71 - Marian Benčat - Angular a NativeScript
 
Daniel Steigerwald: Jak psát mobilní webové aplikace
Daniel Steigerwald: Jak psát mobilní webové aplikaceDaniel Steigerwald: Jak psát mobilní webové aplikace
Daniel Steigerwald: Jak psát mobilní webové aplikace
 

More from Lukáš Vacek

More from Lukáš Vacek (7)

TNPW2-2013-10
TNPW2-2013-10TNPW2-2013-10
TNPW2-2013-10
 
TNPW2-2013-09
TNPW2-2013-09TNPW2-2013-09
TNPW2-2013-09
 
TNPW2-2013-08
TNPW2-2013-08TNPW2-2013-08
TNPW2-2013-08
 
TNPW2-2013-06
TNPW2-2013-06TNPW2-2013-06
TNPW2-2013-06
 
TNPW2-2012-10
TNPW2-2012-10TNPW2-2012-10
TNPW2-2012-10
 
TNPW2-2012-09
TNPW2-2012-09TNPW2-2012-09
TNPW2-2012-09
 
TNPW2-2012-04
TNPW2-2012-04TNPW2-2012-04
TNPW2-2012-04
 

TNPW2-2013-02

  • 1. TNPW2 2012/2013 02 – Webové aplikace Mgr. Lukáš Vacek lukas.vacek@uhk.cz
  • 2. 2 Agenda • Webové aplikace a jejich historie • Výhody a nevýhody webových aplikací • Jak webová aplikace funguje? • 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 (* vysvětlím) 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 >> dotaz/odpověď • 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á reaguje 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) • Sociální sítě (Facebook, Twitter a spol.) • ASP (Application Service Provider), SaaS (Software as a Service) – hostování, pronájem aplikací a služeb
  • 6. 6 Webové služby • Model 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) • Pomocí 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í • Jak webová aplikace funguje? • 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 (exponenciálně roste počet přístupů z mobilů) • Výborná dostupnost, 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 • Roadmapa aktualizací nemusí vyhovovat všem klientům (viz. nasazení Office) • 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í • Jak webová aplikace funguje? • Vývoj webových aplikací • Vývojové technologie • Internet, doporučená literatura
  • 11. 11 Komunikace klient/server • Webová aplikace je postavena na modelu klient/server • Na straně klienta je obvykle vizuální rozhraní aplikace (User Interface, frontend) ▫ HTML + CSS + JavaScript (nejčastější případ) ▫ Flash/Flex ▫ Silverlight… • Na straně webového serveru (backend) je aplikační logika, datové úložiště atd. ▫ Část aplikační logiky může být i na klientovi (JavaScript)! • Obvykle se ke komunikaci využívá protokol HTTP/HTTPS (port 80, resp. 443) • Klientským zařízením nemusí být jen stolní počítač!
  • 12. 12 Synchronní a asynchronní komunikace • Synchronní komunikace ▫ Je (zatím) častější ▫ Dotaz klienta + odpověď serveru (znáte ze statických webů) ▫ Iniciátorem komunikace je vždy klient (webový prohlížeč) ▫ Aktuálnost informací má určité zpoždění (až když se klient zeptá) • Asynchronní komunikace ▫ Má permanentně otevřený komunikační kanál ▫ Oboustranná komunikace mezi serverem a klienty ▫ Využívá se v tzv. realtime aplikacích (online chat, kurzy akcií apod.) ▫ Podpora v různých technologiích, nejznámější asi AJAX, web socket apod. • Metody komunikace v HTML5 • SignalR: Realtime web v ASP.NET (Michal „Altair“ Valášek)
  • 13. 13 Agenda  Webové aplikace a jejich historie  Výhody a nevýhody webových aplikací  Jak webová aplikace funguje? • Vývoj webových aplikací • Vývojové technologie • Internet, doporučená literatura
  • 14. 14 Vývoj webových aplikací • 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 ▫ Různá koncová zařízení, snaha o co nejmenší datový traffic (odezva, peníze) • Při návrhu GUI aplikace je vhodné přesně specifikovat použité technologie a standardy (ve firemních intranetech stále přežívá IE6!) • 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)!
  • 15. 15 Požadavky na (webový) projekt – I. Motto: „Když něco nemůžete změřit, nemůžete to ani řídit“ – Peter Drucker • Požadavky na informační systém určuje business! ▫ Zohlednit potřeby zákazníka, jejich pokrytí funkcionalitou systému ▫ Měřit přínos jednotlivých požadavků (ROI, TCO) – vyplatí se to, za jakých podmínek? ▫ Návrh architektury musí být v rovnováze – business/technologie – z krátkodobého i dlouhodobého hlediska! ▫ Náklady ovlivňují zvolené technologické řešení ▫ Důležitá je zpětná vazba do businessu v průběhu všech etap řešení • Kvalita výstupu je přímo úměrná kvalitě vstupních informací ▫ Implementace řešení, odhady pracnosti, náklady, termíny, pokrytí požadavků • Kvantifikujte požadavky ▫ Obecné pojmy (např. rychle, flexibilně, rozšířitelně) nemají jednoznačný výklad ▫ Upřesněte, co konkrétní požadavek znamená? (např. Průměrná doba odezvy je… )
  • 16. 16 Požadavky na (webový) projekt – II. • Komunikace je králem! ▫ Efektivní komunikace je klíčem k úspěšnému projektu ▫ Musíte být schopni vysvětlit své návrhy/nápady pokud možno stručně – stostránkový dokument (skoro) nikdo nečte! Hlavně ne zákazník  ▫ Nebojte se používat názorné obrázky, buďte srozumitelní ▫ Vždy musíte vědět, kdo je vaše publikum… komu prezentujete/vysvětlujete • Pozor! Ne vždy je splnění všech zadaných požadavků možné ▫ Odporující si požadavky, termíny, cena, technologie, další omezení… • Pečlivě vše dokumentujte (požadavky i návrh architektury) ▫ Co, kdo, kdy, proč, jaká omezení? ▫ Jedině s dokumentací lze rozhodnout, je-li dodávané řešení v souladu s požadavky ▫ Kvalitní dokumentace zjednodušuje provoz a případný další rozvoj systému
  • 17. 17 Příklady obvyklých požadavků a potřeb uživatelů • Koncový uživatel – intuitivní a správné chováním, výkon, spolehlivost, použitelnost, dostupnost a bezpečnost • Administrátor – přehlednost chování, jednoduchost správy, nástroje pro monitorování provozu • Pracovník businessu – konkurenceschopné funkce, co nejkratší dobu pro uvedení do provozu, porovnání s konkurenčními produkty/službami a cenou • Zákazník – zajímá ho cena, stabilita a termín dodání • Vývojář – očekává jasně specifikované požadavky, a jednoduchý, konzistentní přístup k dobře zdokumentovanému návrhu, snadné provádění změn • Projektový manažer – vyžaduje předvídatelnost při sledování projektu, termínů, rozpočtů a možnost produktivního využití zdrojů Zdroj: Monson-Haefel, Richard – 97 klíčových znalostí softwarového architekta
  • 18. 18 Testování (webových) aplikací • Je třeba klást maximální důraz na testování (nejlépe automatizované) a brát v úvahu rozdíly mezi testovacím a skutečným provozem (HW, SW, konfigurace)! • Existují různé druhy (automatických) testů ▫ Funkční, integrační, zátěžové, unit testy apod. • Při opakovaném použití (iterace) přináší automatické testování výraznou úsporu času a lidských zdrojů (kapacit)… snižuje náklady na projekt! • „Automatizace snižuje pravděpodobnost, že uděláme při zadávání chybu, ale zvyšuje pravděpodobnost, že na něco zapomeneme“ – Michael Nygard • Začněte měřit výkon systému (nebo jeho části) co nejdříve ▫ Agilní metodiky: Výkonnostní testy nejpozději od 3. iterace (1 iterace = cca 2-4 týdny) ▫ Pozdějším nasazením se připravíte o možnost identifikovat, jaká změna měla za následek případné problémy s výkonem
  • 19. 19 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!
  • 20. 20 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
  • 21. 21 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 • Používání frameworků je trend!
  • 22. 22 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 • Programují se funkce, která uživatel nepotřebuje nebo nevyužívá (řada z nich není v UI vůbec vidět) • Ignorují se základní bezpečnostní pravidla pro přístup k aplikacím a k datům
  • 23. 23 Chyby při vývoji webových aplikací – II. • 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řenáší se zbytečně velké množství dat mezi serverem a klientem (pozor na mobily!) • 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/
  • 24. 24 Agenda  Webové aplikace a jejich historie  Výhody a nevýhody webových aplikací  Jak webová aplikace funguje?  Vývoj webových aplikací • Vývojové technologie • Internet, doporučená literatura
  • 25. 25 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!
  • 26. 26 Technologie používané u webových aplikací Na straně klienta • HTML formuláře • CSS, DHTML, XSLT • Klientské skripty (JavaScript, dříve i 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*) Hvězdičkou (*) jsou označené zastaralé nebo jinak problematické technologie
  • 27. 27 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
  • 28. 28 Agenda  Webové aplikace a jejich historie  Výhody a nevýhody webových aplikací  Jak webová aplikace funguje?  Vývoj webových aplikací  Vývojové technologie • Internet, doporučená literatura
  • 29. 29 Odkazy na Internetu • http://www.kosek.cz/php/index.html (PHP) • http://www.asp.net/ (ASP.NET) • http://java.sun.com/javaee/index.jsp (Java/JEE) • http://java.sun.com/javaee/javaserverfaces/ (Java/JSF) • http://www.hibernate.org/ (ORM) • http://nhibernate.sourceforge.net/ (ORM) • http://www.smarty.net/ (PHP framework) • http://www.ruby-lang.org/en/ (Ruby) • http://tomas-net.blogspot.com/2006/04/souboj-tlust-tenk-aplikace.html • http://zdrojak.root.cz/clanky/prezentacni-vzory-zrodiny-mvc/ • http://www.root.cz/zpravicky/jak-zrychlit-web/ • http://zdrojak.root.cz/clanky/jak-zrychlit-server-nekolik-praktickych-postrehu/ • http://zdrojak.root.cz/clanky/single-page-apps-a-reseni-problemu-s-historii/ • http://zdrojak.root.cz/clanky/mobilizujeme-web-v-html5/ • http://www.netmagazine.com/features/future-css-layouts • http://www.zdrojak.cz/clanky/metody-komunikace-v-html5/ • http://www.youtube.com/watch?v=vPXK82CayYE&feature=plcp (video přednášky o cache)
  • 30. 30 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
  • 31. 31 Souhrn  Webové aplikace a jejich historie  Výhody a nevýhody webových aplikací  Jak webová aplikace funguje?  Vývoj webových aplikací  Vývojové technologie  Internet, doporučená literatura