58
Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze Dominik Kostka Databázová aplikace pomocí ASP.NET Bakalářská práce 2011

Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

Vysoká škola ekonomická v PrazeFakulta informatiky a statistiky

Vyšší odborná škola informačních služeb v Praze

Dominik Kostka

Databázová aplikace pomocí ASP.NET

Bakalářská práce

2011

Page 2: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

ProhlášeníProhlašuji, že jsem bakalářskou práci na téma Databázová aplikace pomocí

ASP.NET zpracoval samostatně a použil pouze zdroje, které cituji a uvádím v seznamu

použitých informačních zdrojů.

V Praze, 19. 12. 2011 ................................

Dominik Kostka

Page 3: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

PoděkováníNa tomto místě bych rád poděkoval vedoucímu bakalářské práce Ing. Davidu

Klimánkovi, Ph.D. za čas věnovaný při konzultačních hodinách a některé připomínky

k práci. Dále děkuji rodině za podporu a trpělivost.

Page 4: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

AbstraktBakalářská práce Databázová aplikace pomocí ASP.NET se snaží zpracovat návrh

a implementaci rezervačního systému restaurace. Pro její vývoj jsou používány

následující softwarové prostředky: vývojové prostředí Visual Studio 2010 a webové

technologie ASP.NET, XHTML, CSS a AJAX.

V teoretické části bakalářské práce jsou čtenáři seznámeni se základními principy

webové technologie ASP.NET, její komparací s alternativními technologiemi PHP a

JSP a rešerší existujícího řešení pro rezervační systém restaurace. V praktické části jsou

názorné ukázky návrhu a implementace databázové aplikace a popis jejího vývoje.

V závěru práce jsou shrnuty veškeré poznatky s návrhy možností dalšího využití.

Klíčová slova: Databáze, aplikace, ASP.NET, rezervační systém restaurace

AbstractThe bachelor thesis Database application by ASP.NET deals with the proposal

and implementation of a restaurant reservation system. For the development are used

following software resources: IDE Visual Studio 2010 a websites technology ASP.NET,

XHTML, CSS a AJAX. In the theoretical part of the bachelor thesis are readers

acquainted with basic principles of the web technology ASP.NET in comparison with

alternative technologies PHP and JSP, and with the research of existing solutions

for the restaurant reservation system. In the practical part are demonstrative examples

of the proposal and implementation of database application and the description of its

development.

In the conclusion of the thesis are summarized all findings and suggestions

of other application.

Page 5: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

7

ObsahObsah................................................................................................................................7

Úvod..................................................................................................................................9

Teoretická část...............................................................................................................10

1 Představení technologie ASP.NET .....................................................................10

1.1 Základní principy ASP.NET......................................................................10

1.1.1 Architektura .NET Frameworku.......................................................10

1.1.2 Kompilace .NET aplikací .................................................................12

1.2 Používané programovací jazyky................................................................13

1.2.1 Charakteristika VB .NET .................................................................13

1.2.2 Charakteristika C#............................................................................14

1.3 Komunikace klienta a serveru....................................................................15

1.3.1 Objektový model ASP.NET stránek ................................................15

1.3.2 Postback a ViewState .......................................................................17

1.4 Komponenty ASP.NET Web Controls ......................................................18

1.5 Masterpages ...............................................................................................19

1.6 Formátování pomocí Themes a Skins........................................................21

1.6.1 Princip použití motivů ......................................................................21

1.6.2 Motivy vs. CSS.................................................................................21

1.7 Zabezpečení ASP.NET aplikací ................................................................22

1.7.1 Autentizace.......................................................................................22

1.7.2 Autorizace ........................................................................................23

2 ASP.NET vs. konkurenční technologie...............................................................24

2.1 PHP ............................................................................................................24

2.2 JSP .............................................................................................................25

2.3 Porovnání technologií ................................................................................27

3 Rešerše řešení pro rezervační systém..................................................................29

3.1 Současná funkcionalita systému ................................................................29

3.2 Proces rezervace v systému .......................................................................29

3.3 Jak rozšířit funkcionalitu systému .............................................................30

Page 6: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

8

Praktická část ................................................................................................................31

4 Návrh informačního systému restaurace .............................................................31

4.1 Funkční požadavky IS ...............................................................................31

4.2 Datové modely...........................................................................................32

4.2.1 Konceptuální model .........................................................................32

4.2.2 Logický model..................................................................................33

4.2.3 Fyzický model ..................................................................................34

4.3 Databázové tabulky....................................................................................35

4.4 Normalizace ...............................................................................................36

5 Návrh aplikace rezervační systém restaurace......................................................37

5.1 Funkcionalita .............................................................................................37

5.2 Případy užití ...............................................................................................38

5.3 Přihlášení uživatele ....................................................................................39

5.4 Vytvoření rezervace ...................................................................................40

5.5 Diagram tříd ...............................................................................................41

5.6 Stavový diagram ........................................................................................42

5.7 Diagram nasazení.......................................................................................43

6 Implementace databáze .......................................................................................44

6.1 Vytvoření tabulek ......................................................................................44

6.2 Referenční integrita a integritní omezení...................................................45

6.3 Naplnění tabulek daty ................................................................................46

7 Implementace aplikace ........................................................................................47

7.1 Rámec aplikace pomocí Masterpages........................................................47

7.2 Propojení aplikace a SQL databáze ...........................................................48

7.3 Začlenění komponent ASP.NET Web Controls ........................................49

7.4 Vzhled aplikace..........................................................................................50

7.5 Distribuce aplikace na web ........................................................................51

Závěr...............................................................................................................................52

Seznam použitých zdrojů .............................................................................................53

Přílohy ............................................................................................................................55

Page 7: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

9

ÚvodZadáním mé bakalářské práce je návrh a implementace databázové aplikace

pomocí ASP.NET. Při jejím vývoji kladu důraz především na využití serverových

ovládacích prvků, které poskytuje technologie ASP.NET.

Aplikace představuje rezervační systém restaurace. Toto téma jsem si zvolil

z toho důvodu, že se již dlouho zajímám o problematiku technologie ASP.NET, a proto

jsem touto cestou konkretizoval její přínos v praxi na rezervačním systému restaurace,

který nabízí v této podobě více funkcí než alternativní webové technologie.

V rámci vývoje používám primárně prostředky technologie ASP.NET. Kromě

serverových ovládacích prvků využívám programovací jazyk C# pro tvorbu obslužného

kódu událostí, které jsou vyvolané uživatelem aplikace. Pro vytvoření přehledného

grafického uživatelského rozhraní využívám jednak ASP.NET masterpages, které slouží

k vytvoření jednotného vzhledu aplikace, dále ASP.NET Themes and Skins, jež

umožňují konfigurovat vzhled serverových ovládacích prvků a rovněž technologii CSS

pro formátování jednotlivých HTML elementů stránek.

Při zpracování jsem primárně čerpal z publikace Beginning ASP.NE T 4 in C# and

VB eBook, dále také z vývojářské brožury Webový vývoj v ASP.NET 2.0 pomocí

bezplatných Express nástrojů pro úplné začátečníky od společnosti Microsoft a

z publikace Návrh databází od Michaela J. Hernandeze.

Pro úplnost a ucelenost projektu jsem získal další důležité informace

z internetových materiálů, jako například: .NET Framework od začátku od Tomáše

Hercega nebo webový portál Microsoft MSDN ASP.NET 4.

Dílčí výstupy vývoje jsem zpracoval v praktické části, a to jak vizuálně, pomocí

vývojových diagramů, tak i ukázkami kódu z průběhu programování aplikace.

Page 8: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

10

Teoretická část

1 Představení technologie ASP.NETASP.NET je technologie pro tvorbu webových aplikací a služeb od firmy

Microsoft a považuje se za nástupce starší technologie ASP. Název ASP.NET je

odvozen od předchůdce ASP, obě technologie však fungují na odlišném principu. Starší

ASP používá k vývoji aplikací skriptovací programovací jazyky jako VBScript apod.,

které se interpretují, což má výrazný dopad na rychlost aplikací.

Oproti tomu ASP.NET používá téměř výhradně jazyky kompilované, které navíc

již plně podporují principy OOP. Geneze ASP.NET na základě [9] je následující:

ASP verze 1.0 (distribuováno s IIS 3.0) v prosinci 1996

ASP verze 2.0 (distribuováno s IIS 4.0) v září 1997

ASP verze 3.0 (distribuováno s IIS 5.0) v listopadu 2000

ASP.NET verze 1.0 (součást rozhraní .NET Framework 1.0) v lednu 2002

ASP.NET verze 1.1 (.NET Framework 1.1) v dubnu 2003

ASP.NET verze 2.0 (.NET Framework 2.0) v listopadu 2005

ASP.NET verze 3.5 (.NET Framework 3.5) v prosinci 2007

ASP.NET verze 4 (.NET Framework 4.0) v dubnu 2010

1.1 Základní principy ASP.NET

1.1.1 Architektura .NET Frameworku

ASP.NET je součástí rozhraní .NET Framework. Jedná se o prostředí potřebné

pro běh a vývoj .NET aplikací. Nabízí jak spouštěcí rozhraní, pomocí něhož lze

vyvíjené aplikace spouštět a testovat, tak i velké množství potřebných

programátorských knihoven. Umožňuje tak programátorům vyvíjet .NET aplikace

v jakémkoliv programovacím jazyce, jenž podporuje základní součást .NET

Frameworku zvanou CLR.[2]

Komponenta .NET Framework zajišťuje pro vývojáře automatické provádění

následujících nezbytných procesů na základě [2] a [19]:

Správa paměti, vytváření a rušení objektů pomocí Garbage Collection

Spouštění a zastavování vláken kódu, podpora Multithreadingu

Zabezpečení kódu a kontrola oprávnění k prováděným operacím

Rozšiřitelnost metadat

Linkování potřebných knihoven a komponent do paměti apod.

Page 9: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

11

Obrázek 1.1: Architektura .NET Framework [2]

O všechny tyto operace se stará právě CLR - viz obrázek celé architektury .NET

Frameworku:

Architektura rozhraní .NET Frameworku se skládá z několika softwarových

vrstev, a na základě [2] a [19], uvádím stručnou charakteristiku každé z nich:

Operační systém – standardně pouze Windows OS

Common Language Runtime (CLR) – běhové prostředí .NET Frameworku,

jehož role je ekvivalentní k roli JVM na vývojové platformě Java. Jeho

základní funkce uvádím výše a podrobně jsou popsány v [2].

Base Class Library (BCL) – knihovna, která obsahuje nejčastěji používané

pomocné funkce pro práci se soubory, třídění, diagnostiku, síťovou

komunikaci apod.

ADO.NET (ActiveX Data Object for .NET) – knihovna zpřístupňující práci

s externím daty s možností jejich prezentace ve formátu XML.

ASP.NET Web Forms and Web Services – knihovna pro vývoj

uživatelského rozhraní webových aplikací a služeb. Tuto součást používám

v praktické části práce při vývoji ukázkové webové aplikace.

Windows Forms – knihovna pro vývoj uživatelského rozhraní desktopových

aplikací, např. pro Windows.

Common Language Specification (CLS) – je specifikace definující sadu

základních vlastností. Tyto vlastnosti musí mít programovací jazyky

používané pro vývoj .NET aplikací.

Page 10: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

12

V nejvyšší vrstvě architektury .NET Framework se nachází sada

nejpoužívanějších jazyků pro vývoj .NET aplikací. Vyvinula je sama firma Microsoft

speciálně pro platformu .NET a všechny patří mezi jazyky s plnou podporou OOP.

Výrazně zefektivňují vývoj aplikací a umožňují jejich snadnější rozšiřitelnost o nové

moduly. Podrobněji je charakterizuji v následující kapitole.[2]

Poslední součástí schématu, nikoliv ovšem .NET Frameworku, je vývojové

prostředí Visual Studio .NET, také od firmy Microsoft. Prostředí dokáže operovat se

všemi vrstvami .NET Frameworku a pro profesionály představuje nejkomplexnější

vývojový nástroj na zmiňované platformě.[19]

1.1.2 Kompilace .NET aplikací

Kompilace zdrojového kódu aplikací spouštěných na platformě .NET je

prováděna dvěma různými způsoby [2]:

Aplikace vytvořené na platformě.NET kompiluje a spouští přímo CLR, jedná

se o tzv. řízený kód.

Aplikace vytvořené na jiné platformě, nebo ty, u nichž je použití řízeného

kódu explicitně zakázáno, se kompilují do tzv. neřízeného kódu.

Do druhé varianty spadají např. všechny aplikace napsané v jazyce C++, jelikož

ten patří mezi jazyky s absolutní volností a jeho kompilátor neumí vygenerovat řízený

kód.

U jazyků, jejichž kompilátor dovede vygenerovat řízený kód, se program přeloží

do kódu jazyka CIL – Common Intermediate Language (dříve označovaného jako MSIL

– Microsoft Intermediate Language). Jedná se o univerzální jazyk podobný Assembleru

(strojový programovací jazyk), jehož smyslem je zjednodušit přenášení existujícího

kódu .NET aplikací mezi různými platformami. CIL je však mnohem vyspělejší, jelikož

dokáže pracovat s objekty, metodami a jinými datovými strukturami používanými

v jazyce, ze kterého se program překládá.

Nevýhoda CIL spočívá v neexistenci procesoru schopného přímo vykonávat jeho

kód. Kód v jazyce CIL se tudíž pomocí JIT kompilátoru přeloží do tzv. nativního

(strojového) kódu platformy, na níž se aplikace spouští.

Popsaný princip kompilace platí obecně pro všechny .NET aplikace (tedy i

desktopové). Pro ASP.NET webové aplikace platí, že jejich kód se nikdy neinterpretuje,

je tedy plně kompilovaný. Při kompilaci se vytvoří jeden či několik souborů typu .dll

nebo .exe, jež se označují jako tzv. assembly (jednotka používaná pro libovolně velkou

Page 11: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

13

zkompilovanou část kódu .NET aplikace). Podrobně jsou assembly soubory popsány

v [2].

Kód webové stránky stačí jen umístit na webový server do virtuálního adresáře,

zkompiluje se automaticky při prvním přístupu klienta a stránka se uloží do vyrovnávací

paměti jeho webového prohlížeče. Kdykoliv se kód stránky změní, je při dalším

přístupu klienta ke stránce rekompilován.

Jednotlivé webové stránky aplikace v ASP.NET se tedy kompilují znovu pouze

tehdy, když dojde k aktualizaci jejich zdrojového kódu, což podstatně zvyšuje rychlost

běhu aplikace, resp. načítání stránek.

1.2 Používané programovací jazykyJak zmiňuji v předchozí kapitole, .NET Framework resp. ASP.NET podporuje

pro vývoj svých aplikací použití libovolného jazyka kompatibilního s CLR. Mezi ně

patří např. VB .NET, C#, J# , JScript, Managed C++ a jiné.

Prvním dvěma jmenovaným se věnuji v této kapitole, jelikož jsou to dva

nejužívanější jazyky pro psaní webových aplikací v ASP.NET.

1.2.1 Charakteristika VB .NET

VB.NET je objektově orientovaný jazyk, vyvinul se z jazyka Visual Basic.

Visual Basic byl prvním jazykem, jenž umožňoval díky svému vývojovému prostředí

jednoduše vytvářet okenní aplikace s pokročilým uživatelským rozhraním za pomocí

techniky drag and drop a následným dopsáním obslužného kódu. Již ve své době však

Obrázek 1.2: Kompilace a spouštění .NET aplikací [2]

Page 12: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

14

zaostával za konkurencí, a to především kvůli pomalému běhu jeho aplikací a

omezeným možnostem vývoje. Jeho poslední klasická verze je Visual Basic 6 z roku

1998. Tato verze již sice částečně podporovala OOP, ale zaměřovala se především

na databázové aplikace.

Se zveřejněním první verze platformy .NET uvolnila firma Microsoft vlastní verzi

jazyka pod názvem Visual Basic 7, který se označuje jako oficiálně první verze

VB.NET. V současnosti je jeho nejnovější verze Visual Basic 10 (označovaná také jako

Visual Basic 2010). VB.NET sebou přinesl celou řadu novinek. K jeho základním

charakteristikám [6] patří:

nezávislost na cílové platformě,

kompletní podpora OOP včetně rozhraní, dědičnosti a generických datových

typů,

rozsáhlé množství knihovních funkcí,

pokročilá práce s databázemi, podpora technologie LINQ,

zpětná kompatibilita s rozhraními COM a WinAPI,

povinná deklarace proměnných (od verze 7),

názvy všech slov kódu jsou case insensitive (nezávislé na velikosti písmen),

automatická detekce konce řádků kódu (od verze 10).

Kompletní specifikace jazyka VB .NET je samozřejmě mnohem širší a popisuje ji

dokumentace jazyka [17].

Závěrem k VB.NET dodávám, že je vhodnou variantou pro vývojáře, co začínají

s vývojem na platformě .NET bez jakýchkoliv zkušeností s programováním. Díky

originální syntaxi patří k těm snadno srozumitelným a definuje velké množství

klíčových slov, jež jsou pro začátečníky lehce zapamatovatelné.Partial Class Default4

Inherits System.Web.UI.PageProtected Sub Button1_Click(ByVal sender As Object, ByVal e As

System.EventArgs) Handles Button1.ClickMe.Visible = False

End SubEnd Class

Tabulka 1.1: Ukázka kódu jazyka VB .NET [9]

1.2.2 Charakteristika C#

Na rozdíl od VB .NET patří C# mezi nové jazyky. Vyvinula ho firma Microsoft a

vznikal paralelně s první verzí platformy .NET, pro kterou je určen. C# přímo vychází

z jazyků C/C++ a Java, s nimiž ho spojuje velmi podobná syntaxe. Je tak primárně

určen pro vývojáře na těchto platformách, protože je nenutí učit se syntaxi zcela novou.

Page 13: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

15

Mezi jeho základní charakteristiky patří následující výčet vlastností podle [2] a [6]. A

jak zmiňuje ([2], str. 6): „Většina uvedených vlastností vychází přímo z funkcionality

vývojového rámce .NET.“:

Čistě objektová orientace

Nativní podpora komponentového programování (Controls)

Podpora pouze jednoduché dědičnosti a násobné implementace rozhraní

Vedle členských dat přidává objektům vlastnosti a události

Podpora atributového programování

Zpětná kompatibilita se stávajícím kódem na binární i strojové úrovni

Názvy všech slov kódu jsou case sensitive (rozlišují se velká a malá písmena)

Konec řádku kódu musí být označen středníkem (je nesignifikantní)

Implementace jazyka C# s názvem Visual C# je rovněž součást vývojového

prostředí Visual Studio .NET. Pro kompletní specifikaci odkazuji i zde na dokumentaci

jazyka [4]. Na závěr opět uvádím ukázku kódu, tentokrát pro C#:public partial class Default5 : System.Web.UI.Page{

protected void Button1_Click(object sender, EventArgs e){

Button1.Visible = false;}

}Tabulka 1.2: Ukázka kódu jazyka C# [9]

1.3 Komunikace klienta a serveruTuto kapitolu věnuji konkrétním specifikům ASP.NET, komunikace klienta a

serveru, na němž ASP.NET aplikace běží. Čerpám v ní ze zdrojů [19], [1].

1.3.1 Objektový model ASP.NET stránek

S příchodem ASP.NET se vývoj webových aplikací a služeb zásadně změnil.

Do té doby existoval zásadní rozdíl mezi principem vytváření klasických desktopových

a webových aplikací.

Tvorba desktopových aplikací se stala postupně pro vývojáře všeobecně snadnou

činností. Aplikace se skládá z jednotlivých navzájem propojených formulářů (Forms).

Každý formulář obsahuje jeden nebo více ovládacích prvků (Controls) – jako jsou

tlačítka (Button), rozbalovací seznamy (DropDownList), kalendáře (Calendar) apod.

Při vytváření formuláře se jednotlivé prvky jednoduše přetahují z palety prvků. Každý

vývojový nástroj má samozřejmě omezený počet těchto prvků. V případě, že nestačí,

existují v zásadě dvě možnosti. Buď prvky dokoupit, nebo použít volně dostupné prvky

vytvořené jinými vývojáři, nebo si naprogramovat své vlastní. [19]

Page 14: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

16

Podstatou ovládacích prvků v ASP.NET je, že všechny fungují na principu OOP.

Každý prvek se chová jako objekt, má definované určité vlastnosti (výška, šířka, barva

apod.). Prvky také na základě interakce s uživatelem vyvolávají událost (např. kliknutím

myši na tlačítko). Samotný vývoj aplikace spočívá hlavně v programování obslužného

kódu těchto událostí, tzv. kódu na pozadí (Code Behind), který je umístěn

v samostatném souboru navázaném na soubor s webovou stránkou.

ASP.NET využívá pro tvorbu webových aplikací osvědčené principy vývoje

desktopových aplikací a zároveň poskytuje koncovým uživatelům komfortní a efektivní

uživatelské rozhraní. Každá ASP.NET stránka je uložena v souboru s příponou .aspx.

Obsahuje stejně jako formulář desktopové aplikace ovládací prvky, což jsou v tomto

případě objekty umístěné na serveru. Stejně tak i tyto objekty mají definované vlastnosti

a události, které na nich mohou vyvolávat uživatelé.[19]

Na straně klienta se při nahrání stránky zobrazuje pouze její čistý HTML

popřípadě XHTML obraz. Klient, resp. jeho webový prohlížeč není zatěžován nutností

dodatečné instalace různých appletů (doplňkových programů) jako je ActiveX apod.

Jediná interaktivita klientského prohlížeče a serveru probíhá pomocí Javascriptů, jejichž

podpora v prohlížeči je společně s podporou HMTL, resp. XHTML jedinou podmínkou

pro zobrazení stránky. Všechny ovládací prvky stránek se umísťují na server a zde se

také spravují. ASP.NET aplikace tak kladou na stranu klienta minimální požadavky.

Obrázek 1.3: Princip komunikace klientský prohlížeč-ASP.NET server [19]

Page 15: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

17

1.3.2 Postback a ViewState

Všechny objekty (ovládací prvky) použité v ASP.NET stránce existují na serveru

pouze po dobu vykonávání klientských požadavků, poté se do klientského prohlížeče

pošle stránka s aktualizovanými HTML obrazy všech ovládacích prvků.[19]

Princip pouze dočasného uložení ovládacích prvků stránky v paměti serveru nutně

vede k otázce, jak tyto prvky opětovně reagují na události vyvolané klientem. To

zajišťuje ASP.NET funkce nazývaná Postback. V případě, že klient provede akci

na některém ovládacím prvku (stisknutí tlačítka, výběr položky v rozbalovacím

seznamu apod.), pošlou se z jeho prohlížeče pomocí Javaskriptu informace o vyvolané

události. Na základě nich se na serveru obnoví celý objektový model stránky se všemi

prvky. Pokud je k prvku přiřazen obslužný kód události, tak se provede. Následně je

celá aktualizovaná stránka odeslána zpět na klienta.[19]

Využití funkce Postback se u jednotlivých ovládacích prvků liší. Typickým

příkladem prvku, který by bez této funkce postrádal význam, je tlačítko. Naopak např.

u prvku rozbalovací seznam závisí použití funkce na aktuálních potřebách vývojáře.

Zapnutí nebo vypnutí funkce Postback se pak určuje pomocí jeho vlastnosti

AutoPostBack. Funkce Postback má však nevýhodu ve velkém zatěžování serveru.

Proto její nadměrné používání může způsobit zpomalení ASP.NET aplikace, jež se

projeví značně dlouhým „problikáváním“ prohlížeče při aktualizaci stránek. Při vývoji

aplikace je tedy vhodné zvažovat, zda u jednotlivých prvků funkci použít či nikoliv.[19]

Funkce Postback tedy zajišťuje komplexní aktualizaci ASP.NET stránky. To však

pro její správné zobrazení nestačí. Proto, aby se mohl na serveru obnovit celý objektový

model stránky, musí server obdržet informace o aktuálním stavu jednotlivých

ovládacích prvků stránky zobrazených na klientovi. Uchování těchto stavů umožňuje

funkce zvaná ViewState. Výsledek její činnosti se ve zdrojovém kódu stránky

zobrazené v klientském prohlížeči projeví následovně:[19]

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"

value="/wEPDwUKLTE2MjY5MTY1NQ9kFgICAw9kFgICAQ8PFgQeBFRleHQFC0hl

bGxvIFdvcmxkHgdWaXNpYmxlaGRkZCCePWo7WfgvTZyzwtsWDEHgrvFY" />

Tabulka 1.3: Výsledek funkce ViewState v kódu ASP.NET stránky [19]

Při každé rekonstrukci objektového modelu stránky získává server

od jednotlivých prvků jejich stav a ten pak po dokončení rekonstrukce posílá

ve zdrojovém kódu stránky zpět do prohlížeče v zakódovaném a digitálně podepsaném

skrytém vstupním poli. Při následném klientském požadavku se pomocí funkce

Page 16: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

18

Postback odešle obsah pole zpět na server, kde se podle něj aktualizuje stav ovládacích

prvků. Používání funkce ViewState u prvků se řídí nastavením hodnoty jejich vlastnosti

EnableViewState. Podrobně práci s funkcemi Postback a ViewState popisuji v praktické

části práce.[19]

1.4 Komponenty ASP.NET Web ControlsPřed vznikem ASP, resp. ASP.NET se ve webových stránkách používaly klasické

HMTL ovládací prvky (HTML Controls). ASP.NET poskytuje vývojářům svou vlastní

sadu webových ovládací prvků (Web Server Controls), jejichž funkcionalita zahrnuje

veškeré možnosti HTML Controls, ovšem ASP.NET je výrazně rozšiřuje a přidává řadu

nových. Podle aktuální verze ASP.NET 4 je lze rozdělit podle jejich funkcionality

do následujících kategorií [1]:

Standard Controls – je skupina nejčastěji používaných prvků. Patří sem

prvky, které jsou odvozené od prvků ze standardních webových formulářů, a

také řada komplexnějších prvků – tyto umožňují pokročilou manipulaci se

statickými i dynamickými daty. Nejsou vázány na žádné HTML elementy a

umožňují naprogramovat pokročilou funkcionalitu pomocí obslužného kódu

událostí, které zachytávají.

Data Controls – je skupina prvků, které slouží pro práci s externími daty,

typicky s těmi umístěnými v relační databázi.

Validation Controls – zahrnuje všechny standardní validační prvky. Ty

například umožňují kontrolovat vyplnění povinných polí formuláře, správně

zadané uživatelské jméno a heslo při přihlášení uživatele apod.

Navigation Controls – poskytuje prvky ke znázornění navigace v ASP.NET

webu, tj. zobrazení kompletní mapy webu pomocí stromové struktury nebo

např. nastavení jejího XML datového zdroje.

Login Controls – tyto prvky obsahují veškeré funkce potřebné k autentizaci

uživatele při vstupu do ASP.NET webové aplikace. Patří sem např. prvky

zobrazující přihlašovací uživatelské rozhraní nebo umožňující uchování

přihlašovacích údajů uživatele v paměti webového prohlížeče.

HTML Server Controls – je sada prvků vytvořená konverzí ze standardních

HTML elementů. Umožňuje jejich použití v ASP.NET stránce. Tyto prvky

totiž dokáže ASP.NET server zpracovat, ale standardní HTML elementy

považuje za nesrozumitelný text. Musí být navíc vždy součástí HTML

elementu <form>.

Page 17: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

19

Následující obrázek znázorňuje přehled některých Web Server Controls

dostupných ve vývojovém prostředí VS:

Každý prvek z Web Server Controls s výjimkou těch z kategorie HTML Server

Controls se deklarují značkou <asp: prvek>. Ty, které sdružují více prvků do jednoho

celku, se ukončují párovou značkou </asp: prvek>. Bez výjimky mají všechny prvky

atribut runat=“server“, protože běží na straně serveru. Níže uvádím příklad deklarace

prvku Calendar:

<asp:calendar id=“Calendar1“>

Kromě výchozích Web Server Controls lze v ASP.NET vytvářet vlastní prvky tzv.

Custom Server Controls1, jež jsou vždy kombinací těch výchozích, ale jsou doplněné

o specifickou funkcionalitu pomocí obslužného kódu událostí, formátování vzhledu

apod.

1.5 MasterpagesMasterpages, neboli stránky předloh, slouží v ASP.NET jako šablona

pro standardní stránky s individuálním obsahem, jež se označují jako Contentpages.

Masterpages v zásadě definují veškeré společné prvky použité v Contentpages a jejich

jednotné umístění v nich. Můžou přitom zahrnovat jakýkoliv statický text, HTML

elementy nebo serverové ovládací prvky. Obsah Masterpage se ukládá do souboru

1 http://www.asp.net/Community/Control-gallery/

Obrázek 1.4: Web Server Controls v prostředí VS

Page 18: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

20

s příponou .master. Použítí Mastepage jako šablony pro konkrétní Contentpage se

deklaruje následovně [9]:

<%@ Master Language="C#" CodeFile="MasterPage.master.cs"Inherits="MasterPage" %>

Direktiva @Master určuje použití šablony. Atribut Language značí použitý jazyk

pro tvorbu kódu na pozadí, CodeFile uvádí název sdruženého souboru Masterpage.

Obsahuje tento kód s případnou cestou k němu v adresářové struktuře vzhledem

ke kořenové složce webu. Inherits nastavuje dělení obsahu Masterpages aktuální

Contentpage.

Kromě výše uvedených obsahuje každá Masterpage jeden nebo více speciálních

ovládacích prvků s názvem ContentPlaceHolder. Ten definuje ve stránce šablony

jednotlivé oblasti (regiony) pro umístění tzv. nahraditelného obsahu, jenž je

specifikován až v příslušných Contentpages a pro každou z nich je zcela individuální.

ContentPlaceHolder definuje pro Contenpages všechny společné oblasti

s nahraditelným obsahem, všechny ostatní lze editovat pouze přímo v Masterpage.[9]

Deklaruje se takto:

<asp:contentplaceholder id="Header" runat="server" />

Atribut id jednoznačně identifikuje daný ContentPlaceHolder. V Contentpage se

nastavení jeho obsahu definuje následovně:

<asp:content id="Obsah" ContentPlaceHolderID="Header"runat="server">Toto je nahraditelný obsah ContentPlaceHolderu.</asp:content>

Ovládací prvek Content odkazuje na ContentPlaceHolder s id=“Header“ a

umožňuje definovat jeho specifický obsah pro ContentPage.

Masterpages lze v ASP.NET aplikacích připojovat na třech různých úrovních, jež

se liší rozsahem působnosti [9]:

Na úrovni stránky – Používá se pro navázání konkrétní Contenpage

na Masterpage. Definice tohoto navázání je použita v příkladech výše.

Na úrovni složky – Definuje se v lokálním konfiguračním souboru

Web.config. použitím elementu pages a váže všechny ContentPages

z konkrétní složky webu na jednu Masterpage.

Na úrovni aplikace – Váže všechny Contentpages v aplikaci k jedné

Masterpage. Definuje se shodně jako v předchozím případě, ovšem

Page 19: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

21

v globálním konfiguračním souboru Web.config umístěném v kořenovém

adresáři webu.

1.6 Formátování pomocí Themes a Skins

1.6.1 Princip použití motivů

Motiv je sada vlastností, která definuje v ASP.NET vzhled jednotlivých stránek a

v nich umístěné ovládací prvky. Skládá se z jednoho či více souborů uložených

v adresáři, jehož název je zároveň i názvem motivu. Adresář motivu je umístěn

v adresáři App_Themes, který slouží jako standardní úložiště pro motivy webové

aplikace. Obsahuje různé typy souborů v závislosti na cíli použití [9]:

Skins (Vzhledy) – soubory vzhledu mají příponu .skin a obsahují nastavení

vlastností pro ovládací prvky v rámci použitého motivu. Vzhledy se dělí na

dva různé typy podle rozsahu užití, a to na výchozí vzhledy a pojmenované

vzhledy. Výchozí vzhledy zaručí jednotný formát všech ovládacích prvků

jednoho typu (např. Button) ve všech stránkách s daným motivem.

Pojmenované vzhledy se definují pomocí atributu SkinID u jednotlivých

ovládacích prvků a umožňují použít individuální vzhled pro každý prvek

bez ohledu na jeho typ.

CSS šablony – jsou soubory s příponou .css, obsahují definice všech

kaskádových stylů pro HTML elementy stránky v rámci použitého motivu.

Tyto soubory se automaticky umístí do hlavičky stránky, ve které je motiv

užíván.

Pomocné prostředky – jsou soubory obrázků, audia, videa aj., které slouží

jako zdroje pro vzhledy a CSS šablony.

1.6.2 Motivy vs. CSS

Z výše uvedeného plyne, že použití motivů není principiálně v rozporu

s technologií CSS. Součástí motivu může být jedna nebo více CSS šablon. Přesto se tyto

dvě technologie značně odlišují, a to v následujících parametrech [19]:

Úroveň formátování – CSS slouží k formátování na úrovni jednotlivých

HTML elementů, zatímco motivy umožňují formátovat ovládací prvky

na stránkách, ale i vzhled stránek samotných jednotně.

Zpracování – Při použití CSS formátování se informace o něm posílají

do klientova prohlížeče společně se samotnou stránkou, ke které se vztahují.

Zde jsou teprve zpracovány a propojeny se stránkou. Naproti tomu motivy se

Page 20: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

22

zpracovávají již na serveru, kde se následně propojí s příslušnou stránkou a

do prohlížeče je odeslán jen koncový HTML obraz naformátované stránky.

Nastavení použití – CSS musí být nastaveny pro každou stránku zvlášť,

obvykle propojením stránky a CSS souboru, který obsahuje příslušné

vlastnosti. U motivů lze jejich použití nastavit v konfiguračním souboru

Web.config pro všechny stránky webové aplikace najednou.

Priorita použití – V CSS platí při použití stylu priorita lokálně nastavených

vlastností před těmi globálními. U motivů je tomu naopak. Pokud je určitá

vlastnost nastavena v motivu stránky i individuálně u ovládacího prvku,

použije se hodnota z motivu. Toto pravidlo ovšem lze změnit použitím motivů

typu StyleSheetTheme [19], jež mají nižší prioritu než individuálně nastavené

vlastnosti u ovládacích prvků.

Obě technologie se díky těmto odlišnostem při formátování webových stránek

velmi dobře doplňují, a proto je vhodné je kombinovat.

1.7 Zabezpečení ASP.NET aplikací

1.7.1 Autentizace

Autentizace je bezpečnostní proces, který slouží k ověření identity uživatele

webové aplikace. Zpravidla se provádí skrze přihlašovací dialog, kdy je uživatel

povinen zadat své uživatelské jméno a heslo k účtu ve webové aplikaci. Druhou

možností je ověřování pomocí certifikátu, který má uživatel uložený na pevném disku

počítače, z něhož do aplikace přistupuje. V ASP.NET se standardně k ověření identity

používá první způsob. Provádí se v závislosti na typu aplikace pomocí dvou různých

mechanizmů [15] a [19]:

Windows Authentication – užívá se převážně pro ověření uživatelů

v intranetových aplikacích. Pro autentizaci uživatele se použije jeho lokální

účet na dané platformě společně s ověřením jeho IP adresy a domény ze strany

IIS serveru.

Forms Authentication – tento způsob se používá u většiny webových

aplikací. Přihlašovací údaje uživatelů se ukládají do speciální relační databáze,

která je součástí aplikace. Při autentizaci musí uživatel vyplnit příslušné jméno

a heslo v přihlašovacím formuláři. V případě úspěšného přihlášení se jeho

přihlašovací jméno uloží do digitálně podepsaného řetězce cookies a takto se

uchovává při přechodu uživatele mezi jednotlivými webovými stránkami.

Page 21: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

23

Pro vytváření uživatelských účtů existuje v ASP.NET webový konfigurační

nástroj jménem ASP.NET Web Site Administration Tool, jenž je standardně součástí

vývojového prostředí VS.NET, popřípadě zdarma dostupného VWD Express. Po jeho

spuštění v libovolném internetovém prohlížeči lze na záložce Security vytvářet nové

uživatelské účty. Nejprve se ovšem musí nastavit typ autentizace na From the internet.

Toto nastavení se uloží do konfiguračního souboru aplikace Web.config a zároveň

vytvoří novou SQL databázi ASPNETDB, do níž se ukládají informace o uživatelských

účtech.[19]

Po vytvoření účtu je nutné zařadit do ASP.NET stránky také příslušný

přihlašovací dialog. K tomu slouží validační ovládací prvek Login.

Kromě tohoto prvku se pro účely autentizace využívají rovněž další ovládací

prvky. Všechny patří do skupiny prvků ASP.NET Login Controls a podrobně jsou

popsány v [14]. Řadu z nich představuji a používám v praktické části práce při vývoji

aplikace rezervační systém restaurace.

1.7.2 Autorizace

Autentizace uživatelů je pouze dílčím krokem v rámci zabezpečení aplikace.

Zásadním administračním nástrojem pro práci s uživatelskými účty je autorizace. Jedná

se o rozdělení uživatelů do jednotlivých uživatelských skupin, tzv. rolí. Role umožňují

hromadně definovat přístupová pravidla pro uživatele v rámci webové aplikace. Určují,

ke kterým částem (stránkám) aplikace smí jednotlivé uživatelské role přistupovat a jaká

data zobrazovat a editovat.

Uživatelské role se v ASP.NET definují ve výše zmíněné databázi ASPNETDB

ve speciální tabulce Roles. V tabulce Users, obsahující kompletní informace

o uživatelských účtech, resp. profilech, jsou role přiřazovány jednotlivým uživatelům.

V ASP.NET lze role definovat buď přímou editací tabulek Roles a Users v databázi

ASPNETDB, nebo stejně jako v případě autentizace využít administrační nástroj

ASP.NET Web Site Administration Tool.[19]

Po definování jednotlivých rolí je nutné nastavit také jejich přístupová práva.

Nejvhodnějším způsobem je opět využití nástroje ASP.NET Web Site Administration

Tool. Na záložce Security pomocí volby Create Access Rules se definuje nová tabulka

přístupových práv pro jednotlivé role. Použitím volby Manage Access Rules lze tabulku

s nadefinovanými přístupovými právy kdykoliv zobrazit a editovat.[19]

Page 22: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

24

2 ASP.NET vs. konkurenční technologieASP.NET pochopitelně není jedinou dostupnou technologií pro vývoj webových

aplikací. V této kapitole se zabývám přestavením alternativních technologií PHP a JSP a

jejich porovnáním s technologií ASP.NET.

2.1 PHPPHP (Hypertext Preprocessor, dříve označován jako Personal Home Page) je

celosvětově rozšířený skriptovací jazyk. Primárně byl vytvořen jako nástroj pro tvorbu

dynamických webových stránek. Protože byl PHP již od svého vzniku používán jako

součást struktury jazyků HTML, XHTML apod., stal se vhodným nástrojem i pro vývoj

webových aplikací Postupným vývojem se stal také alternativou pro programování

desktopových aplikací.[3]

PHP vzniklo v roce 1994. Vytvořil jej Rasmus Lerdorf, který se rozhodl napsat

systém umožňující evidovat přístup na jeho webové stránky. Program byl původně

vytvořen v jazyce PERL a později, kvůli velkému serverovému zatížení, přepsán

do efektivnější podoby v jazyce C. Tyto C skripty byly dále publikovány jako sada

nazvaná Personal Home Page Toolkit, později také pod názvem Personal Home Page

Construction KIT - zkráceně PHP.[3]

Obrázek 2.1: Princip činnosti PHP

Page 23: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

25

V roce 1995 spojil Lendorf projekt PHP s jiným projektem - označovaným jako

Form Interpreter (FI). Vznikl nový nástroj jménem PHP/FI 2.0 a rychle se rozšířil

po celém světě. V roce 1998 vznikla nová verze jazyka označována jako PHP 3, která

již podporovala také systém Windows (PHP původně fungovalo pouze v UNIX

systémech). Současná verze jazyka je PHP 5, která již výrazněji podporuje např.

principy OOP. Na základě [3] a [12] mezi typické vlastnosti PHP patří:

Je to svobodný software (Open Source) s vlastní širokou vývojářskou

komunitou.

Je dynamicky typový, typ proměnné se stanovuje až v okamžiku její

inicializace.

Je interpretovaný, jeho zdrojový kód je uchováván v neměnné formě až

do okamžiku svého spuštění. Následně je pomocí tzv. interpretu překládán

do strojového kódu počítače. To způsobuje pomalejší vykonávání kódu než

u jazyků kompilovaných.

PHP skripty se provádí na straně serveru, klient operuje vždy až s jejich

výsledkem.

Je platformě nezávislý, lze v něm vyvíjet pod libovolnou kombinací OS a

hardwaru počítače.

Jeho syntaxe je kombinací syntaxe jazyků C, PERL, Pascal a Java.

Má k dispozici velké množství API knihoven. Tyto knihovny umožňují

pokročilou práci s textem, grafikou, soubory apod.

Umožňuje pracovat s většinou databázových serverů (MSSQL, MySQL,

Oracle, PostgreSQL, ODBC aj.).

Podporuje řadu internetových protokolů (HTTP, SMTP, SNMP, FTP,

IMAP, POP3, LDAP aj.).

2.2 JSPJSP (JavaServer Pages) je skriptovací programovací jazyk, používaný k vývoji

dynamických webových stránek a aplikací vyvinutý společností Sun Microsystems

(dnes Oracle Corporation). Rozšiřuje standardní možnosti jazyka Java určeného

primárně pro vývoj desktopových aplikací. První kompletní verze specifikace jazyka

JSP byla uvedena již v roce 1999 jako reakce na dříve vydanou konkurenční technologii

ASP od společnosti Microsoft.[16]

JSP funguje nad platformou J2EE (Java 2 Enterprise Edition) a využívá veškerou

její funkcionalitu. Vychází z původní javovské technologie pro tvorbu serverových

Page 24: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

26

aplikací, která je založena na vývoji malých programů tzv. servletů (v Javě nazývaných

javaservlety). Jedná se o platformě nezávislé moduly, které obsluhují požadavky HTTP

protokolu na straně serveru. Tím se také liší od tzv. appletů, jež pracují na straně

klienta.

V JSP však už není nutné programovat celý servlet, který kvůli své rozsáhlosti

obvykle značně zatěžuje výkon serveru, ale stačí pouze do HTML kódu stránky dopsat

několik značek v jazyce JSP. Výsledná funkčnost aplikace je v podstatě shodná a

podstatně méně zatěžuje server. Na následujícím schématu uvádím princip činnosti JSP

aplikace :

Jedná se o schéma rozšířeného modelu klient-server v JSP, tzv. Modelu 2. Jeho

činnost je založena na návrhovém vzoru MVC (Model-View-Controller) a vychází

ze základního modelu 1 [8]. Zde uvádím základní princip komunikace klient-server

v JSP na základě [16]:

Klient vyšle požadavek (request) na webovou JSP stránku, tzn. stránku uloženou

ve zdrojovém souboru s koncovkou .jsp. Požadavek se nasměruje na příslušný webový

server.

Server detekuje, že požadovaná stránka je typu JSP a přesměruje požadovaný JSP

soubor do tzv. JSP Servlet stroje. V případě, že je soubor volán poprvé, stroj ho pouze

překontroluje a pokračuje bodem 4, v opačném případě ho převede na servlet.

Vytvořený a zkompilovaný (pomocí JSP Compileru) servlet je uložen v souboru

s koncovkou .class.

Vytvoří se instance servletu, jež je zpracována a v podobě HMTL obrazu odeslána

do klientského prohlížeče jako odpověď (respond) na klientský požadavek.

Obrázek 2.2: Princip činnosti JSP Model 2 [8]

Page 25: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

27

2.3 Porovnání technologiíV této kapitole se zabývám vzájemným porovnáním všech tří představených

webových technologií z hlediska vývojáře. K tomu využívám některé principy metody

vícekriteriálního rozhodování [5].

Porovnat naprosto objektivně výše zmíněné technologie nelze, proto používám

určitá zjednodušení, abych mohl srovnání vůbec provést. Zjistil jsem, že nelze

dostatečně kvalitně určit míru důležitosti (váhu) jednotlivých vývojářských kritérií.

Proto předpokládám jejich ekvivalentnost. K porovnání technologií využívám pouze

kritéria kvalitativní [5], a to dvojího typu:

Binární kritéria – kritéria typu Ano/Ne. Definují existenci určité pozitivní

vlastnosti pro danou technologii (např. podpora více platforem).

Bodovací kritéria – kritéria definovaná kvalitativní bodovou stupnicí. Určují

ty vlastnosti, u nichž je vhodné rozlišovat intenzitu (např. podpora OOP).

Pomocí vlastního testování jednotlivých technologií docházím k následujícím

výsledkům (kritéria jsou seřazena abecedně):

Tabulka 2.1: Porovnání webových technologií [autor]

Na základě uvedených výsledků lze konstatovat, že ASP.NET je ve většině

uvedených kritérií kvalitnější než konkurenční technologie. Ve 2 kritériích poskytují

všechny technologie srovnatelnou kvalitu a pouze v kritériu Podpora více platforem je

ASP.NET horší než obě konkurenční technologie.

Kritérium TechnologieASP.NET PHP JSP

Data Controls Ano Ne AnoMultithreading Ano Ne AnoNativní vývojovéprostředí Ano Ne Ne

Open Source Ne Ano NeOšetřeníprogramovýchvýjimek

Ano Ano Ano

Podpora OOP vysoká nízká vysokáPodpora více jazyků) Ano Ne NePodpora víceplatforem Ne Ano Ano

Podpora webovýchserverů

nízká(standardněpouze IIS)

vysoká (Apache,IIS)

vysoká (Apache,IIS)

Podpora webovýchslužeb Ano Ano Ano

Page 26: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

28

Výsledky porovnání je samozřejmě nutné brát s rezervou. Osobně se přikláním

k technologii ASP.NET, a to především proto, že poskytuje komfortní vývojové

prostředí pevně provázané s platformou, serverové ovládací prvky, které značně

usnadňují především počáteční fázi vývoje aplikací, a umožňuje programovat prakticky

v kterémkoliv jazyce, který odpovídá specifikaci CLS. Naproti tomu JSP je vhodný

pro zkušené vývojáře v Javě, kteří nejsou kvůli němu nuceni přeorientovávat se na jinou

technologii. PHP naopak poslouží především začínajícím vývojářům, kteří vyvíjí méně

rozsáhlé aplikace. Jeho syntax je přehledná a díky tomu je jazyk rychle osvojitelný.

Další jeho výhodou je např. platformní nezávislost PHP aplikací. Každá z technologií

má určité vlastnosti/výhody, které mohou vývojáři preferovat před ostatními. Z velké

části tedy závisí výběr čistě na osobních preferencích.

Page 27: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

29

3 Rešerše řešení pro rezervační systémV této kapitole se zabývám rešerší již existujícího a implementovaného řešení

pro rezervační systém realizovaný skrze portál RezervujStůl.cz.

Systém vytvořil team vývojářů fungující pod záštitou webového portálu

VašeWebovky.cz [18]. Jedná se o skupinu profesionálních vývojář, která vyvíjí

redakční a rezervační systémy pomocí webových technologií PHP, MySQL, Ajax,

jQuery, HTML a CSS.

Na základě této rešerše stanovuji funkcionalitu svého řešení rezervačního

systému. Určuji, co je vhodné z daného řešení použít a o které funkce systém rozšířit.

3.1 Současná funkcionalita systémuSystém nabízí univerzální parametrizované řešení, které je možné implementovat

do různých typů podniků, jako jsou restaurace, pizzerie, sportovní centra, hotely

s restaurací apod. Systém v současnosti poskytuje svým uživatelům následující

funkcionalitu ([11], sekce O systému):

Výběr stolů pomocí interaktivního plánku místností

Podpora více místností – lze rezervovat např. nekuřácký salonek a zároveň

venkovní terasu

Výběr stolů podle umístění v restauraci s detailem každého stolu -

fotografie, kapacita míst, popis stolu apod.

Vlastní nastavení otevírací doby restaurace - možnost nastavení speciální

otevírací doby, např. přes svátky.

Přehledné schéma obsazenosti pro obsluhu restaurace

Možnost provozování systému na webových stránkách dané restaurace

3.2 Proces rezervace v systémuProces rezervace stolů z pohledu zákazníka restaurace:

1. Zákazník si na webu restaurace vybere datum, čas a stůl, vyplní své údaje a

odešle rezervaci.

2. Na vyplněný e-mail obdrží informaci o provedené předběžné rezervaci.

3. Po schválení provozovatelem restaurace obdrží zákazník e-mailem potvrzení

jeho rezervace.

Proces rezervace stolů z pohledu provozovatele restaurace:

1. Rezervační systém oznámí novou rezervaci.

Page 28: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

30

2. Provozovatel zkontroluje údaje zákazníka a potvrdí rezervaci (zákazník

automaticky obdrží potvrzovací e-mail).([11], sekce Jak to funguje)

3.3 Jak rozšířit funkcionalitu systémuCelý rezervační systém [11] umožňuje zákazníkům restaurace využívat pouze

funkce spojené s rezervací stolu on-line. Cílem mého vlastního řešení pomocí

technologie ASP.NET je rozšířit tuto část systému o následující funkcionalitu:

1. Online rezervace menu – umožňuje zákazníkovi restaurace objednat určité

menu předem online na určitý čas po příchodu do restaurace.

2. Online rezervace obsluhy – umožňuje zákazníkovi restaurace rezervovat

konkrétního zaměstnance obsluhy na celou dobu jeho pobytu v restauraci.

3. Online rezervace dovozu menu – umožňuje zákazníkovi restaurace objednat

si dovoz zvoleného menu na požadované místo.

Page 29: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

31

Praktická část

4 Návrh informačního systému restauraceV této kapitole se zabývám návrhem informačního systému restaurace. Definuji

funkční požadavky systému a na jejich základě vytvořím jednotlivé datové modely,

jejichž výsledkem je fyzická struktura systému.

4.1 Funkční požadavky ISNavrhovaný systém podporuje procesy spojené s vytvářením online rezervací

zákazníků restaurace pomocí online rezervačního systému. Je implementován formou

relační databáze. Jeho funkční požadavky popisují následující realitu:

Zákazník má možnost provést online rezervaci. U každé rezervace se eviduje

jedinečné id, popis, datum i čas jejího vytvoření a datum i čas, na který je stanovena.

Rezervace je dvojího typu. První se označuje jako standard a slouží zákazníkům

primárně k rezervaci stolů v restauraci. Volitelně si zákazník může ke každému

rezervovanému stolu objednat vybraného zaměstnance jako soukromou obsluhu a

libovolný druh a počet jídelních menu. V případě menu má možnost zvolit čas, kdy má

být servírováno. Tento čas musí být shodný nebo pozdější vůči času rezervace

příslušného stolu.

Druhým typem rezervace je dovoz vybraného menu, který umožňuje objednat

dovážku na určitou dodací adresu ve stanoveném datu a čase.

Záznamy jednotlivých zákazníků a zaměstnanců obsluhy se evidují odděleně

pro každou z těchto uživatelských rolí. Každý z nich je uložen pod určitým id, které je

unikátní v rámci jeho uživatelské role. Dále se u obou rolí eviduje jméno, příjmení a

věk. U zaměstnanců se navíc zaznamenává i jejich stručný popis a pracovní pozice.

U administrátora IS se neevidují z bezpečnostních důvodů žádné osobní údaje, a proto

se záznamy uživatelů s touto rolí neukládají odděleně.

Page 30: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

32

4.2 Datové modely

4.2.1 Konceptuální model

Konceptuální model zahrnuje celkem 6 entit, u nichž se evidují základní atributy a

relace mezi nimi. Zákazník může mít jednu nebo více rezervací. Každá rezervace

zahrnuje alespoň jeden stolů a libovolný počet menu. Každý stůl může mít k sobě

přiřazeno více zaměstnanců jako privátní obsluhu. Menu může být součástí více

rezervací.

Obrázek 4.1: Konceptuální model

Page 31: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

33

4.2.2 Logický model

Logický model znázorňuje podrobně všechny entity. Oproti konceptuálnímu

modelu jsou již podrobně definovány všechny atributy u každé entity. Relace mezi

jednotlivými entitami jsou znázorněny s ohledem na jejich kardinalitu. V případě relací

s mohutnosti M:N jsou do modelu zařazeny asociační resp. vazební tabulky, které

rozdělují relaci M:N na dvě relace typu 1:N a N:1. Entity Zaměstnanci a Zákazníci jsou

v relaci s entitou aspnet_Users. Ta je odlišena od ostatních entit v modelu jinou barvou,

jelikož patří do ASP.NET části navrhované databáze.

Obrázek 4.2: Konceptuální model

Page 32: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

34

4.2.3 Fyzický model

Fyzický model je vytvořen s ohledem na konkrétní implementační prostředí

databáze. Tímto je MS SQL Server 2008. V modelu jsou již definovány všechny

atributy včetně příslušných datových typů, které jsou kompatibilní s implementačním

prostředím. Každá tabulka, která nahrazuje entitu znázorněnou v logickém modelu, má

definované všechny své primární klíče a integritní omezení v podobě cizích klíčů

z jiných tabulek. Jednotlivé relace entit jsou nahrazeny referencemi mezi tabulkami

pomocí propojení příslušných sloupců. Např. tabulky Zamestnanci a Zákaznici jsou tak

propojeny s tabulkou aspnet_Users pomocí sloupce UserName.

Obrázek 4.3: Fyzický model

Page 33: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

35

4.3 Databázové tabulkyV navrhované části databáze ASPNETDB je definováno 8 tabulek:

Tabulka 4.1: Vlastní tabulky databáze

Kromě vlastní navrhované části databáze ASPNETDB, která je znázorněna

pomocí databázových modelů, obsahuje databáze druhou část, jež je kompletně

spravována technologií ASP.NET. Zahrnuje ASP.NET tabulky, které evidují údaje

o registrovaných uživatelských účtech, jejich členství v určité aplikaci, definovaných

uživatelských rolí apod. Tabulky mají napevno stanovené anglické názvy, které

obsahují příznak aspnet. O jejich automatické vygenerování se stará služba ASP.NET

SQL Provider [9]. Data a definice tabulek lze editovat buď přímo ve vývojovém

prostředí Visual Studio, nebo pomocí nástroje ASP.NET Web Site Administration Tool.

Zde uvádím přehled ASP.NET tabulek, které používám ve své databázi ASPNETDB:

Název tabulky Popis

aspnet_ApplicationsSeznam ASP.NET aplikací registrovaných pro přístup

do databáze ASPNETDB

aspnet_Users Základní údaje uživatelů ASP.NET aplikace

aspnet_Membership Členské údaje uživatelů ASP.NET aplikace

aspnet_Role Definované uživatelské role

aspnet_UsersInRoles Uživatelé a jejich role

aspnet_SchemaVersionsPoskytované ASP.NET vlastnosti a jejich kompatibilní

funkční schémata

Tabulka 4.2: Tabulky služby ASP.NET SQL Provider [9]

Název tabulky Popis

Zamestnanci Zaměstnanci obsluhy

Zakaznici Zákazníci

Rezervace Zákaznické rezervace

RezStandard Detail standardní rezervace

RezDovoz Detail rezervace dovozu

Menu Jídelní menu

Stul Jídelní stoly

Mistnost Místnosti

Page 34: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

36

4.4 Normalizace„Normalizace je proces uspořádání dat v databázi“. Jejím cílem je především

odstranit redundanci dat a odstranit konzistentní závislosti [7]. Normalizace databáze se

provádí podle určitých pravidel, které se označují jako normální formy. Navrhovanou

databázi normalizuji podle 3 základních normálních forem [7], které se v praxi

standardně používají.

Podle definice jsou data v první normální formě právě tehdy, když mají

tzv. atomický tvar a nelze je tedy dělit na menší části. V databázi neexistuje tudíž žádný

tabulkový atribut složený z více částí, např. atribut Adresa v tabulce RezMenu obsahuje

řetězec, který definuje právě jednu doručovací adresu zákazníka.

Dále jsou data uspořádaná podle druhé normální formy. Podle její definice jsou

data v druhé normální formě právě tehdy, pokud jsou v první normální formě a zároveň

neklíčové atributy jednotlivých tabulek závisejí na celém primárním klíči. Tato

podmínka se tedy týká pouze těch tabulek, které mají definovaný složený primární klíč.

V mé databázi se jedná o vlastní tabulky RezMenu, a RezStul. V tabulce RezMenu

figurují jako neklíčové atributy Pocet a Adresa. Oba atributy se kompletně vztahují

ke složenému primárnímu klíči, který je tvořen atributy RezervaceId a MenuId.

Ke každému jednomu primárnímu klíči lze definovat libovolné kombinace hodnot

atributů Pocet a Adresa. Nejsou proto závislé pouze na části primárního klíče a splňují

podmínky druhé normální formy. Totéž platí pro všechny neklíčové atributy v tabulce

RezStul.

Poslední normální formou, podle které jsou data normalizována je tzv. třetí

normální forma. Podle její definice jsou data ve třetí normální formě právě tehdy, když

jsou ve druhé normální formě a zároveň všechny neklíčové atributy tabulky jsou

navzájem nezávislé. Hodnota jednoho neklíčového atributu tedy neurčuje hodnotu

jiného neklíčového atributu nebo naopak. V mé databázi tento problém řeším v tabulce

Rezervace, a to rozdělením rezervace podle typu na dvě samostatné tabulky RezStul a

RezMenu. Každá z nich obsahuje již pouze ty neklíčové atributy, které souvisejí

s daným typem rezervace a jsou navzájem nezávislé.

Page 35: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

37

5 Návrh aplikace rezervační systém restauraceV této kapitole se zabývám návrhem aplikace rezervační systém restaurace.

Definuji jeho funkcionalitu z hlediska jednotlivých uživatelů a jejich případů užití. A

znázorňuji klíčové procesy v systému (autentizace uživatele, vytvoření zákaznické

rezervace) pomocí vývojových diagramů.

5.1 FunkcionalitaPřístup do aplikace je autentizován. Každý uživatel musí mít vytvořen uživatelský

účet a při přihlášení do aplikace zadat platné uživatelské jméno a heslo. Přes webové

rozhraní se lze standardně registrovat pouze jako uživatel s rolí zákazník. Uživatelské

účty s rolí zaměstnanec lze vytvořit pouze pomocí účtu administrátora. Uživatelské

jméno je v rámci celé aplikace unikátní, heslo může mít každý uživatel libovolné, musí

ale obsahovat alespoň jeden nealfanumerický znak. Při přihlášení je uživatel zároveň

autorizován, přiřadí se mu příslušná uživatelská role a na základě ní má přístup

k určitým částem a funkcím v aplikaci. V té jsou definované 3 uživatelské role:

Zákazník - slouží ke správě vlastních rezervací. Můžou vytvářet, editovat a

případně mazat záznamy svých rezervací.

Zaměstnanec - spravuje veškeré rezervace zákazníků. Může zobrazit, mazat a

editovat záznam jakékoliv zákaznické rezervace.

Administrátor - má plnou kontrolu nad všemi uživatelskými účty v systému.

Kromě všech funkcionalit, které má zaměstnanec obsluhy, může navíc

vytvářet, mazat a editovat uživatelské účty a definovat jejich uživatelské role.

Samotná aplikace je implementovaná pomocí technologií ASP.NET, MSSQL,

XHTML, CSS a AJAX. Slouží jako ukázkové řešení pro rezervační systém restaurace.

Aplikace je umístěna na web a lze ji spustit v libovolném webovém prohlížeči

s podporou Javascriptů.

Page 36: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

38

5.2 Případy užití

Obrázek 5.1: Případy užití aplikace

Page 37: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

39

5.3 Přihlášení uživatele

Obrázek 5.2: Diagram aktivit přihlášení uživatele

Page 38: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

40

5.4 Vytvoření rezervace

Obrázek 5.3: Diagram aktivit vytvoření rezervace

Page 39: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

41

5.5 Diagram tříd

Obrázek 5.4: Diagram tříd

Page 40: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

42

5.6 Stavový diagram

Obrázek 5.5: Stavový diagram

Page 41: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

43

5.7 Diagram nasazení

Aplikace je nasazena na webovém portálu, na němž běží webový aplikační server

IIS 7.5. Nad ním pracuje samotná technologie ASP.NET 4.0, která zajišťuje zpracování

všech serverových prvků, které jsou implementované do ASP.NET stránek. Rovněž

vykonává obslužné metody událostí vyvolané klientem. Jednotlivé obslužné požadavky

jsou mezi klientem a serverem přenášeny pomocí Javaskriptu resp. AJAX (Asynchronní

Javaskript). V klientském prohlížeči se zobrazuje již pouze HTML otisk stránky, který

je vytvořený pomocí XHTML a CSS.

Pro práci s daty, která jsou uložena v MSSQL databázi je na portále

implementován databázový server MS SQL Server 2008 R2. Ten komunikuje

s aplikačním serverem pomocí služby ASP.NET SQL Provider.

Obrázek 5.6: Diagram nasazení

Page 42: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

44

6 Implementace databázeV této kapitole se zabývám implementací databáze restaurace. Ta kompletně

probíhá ve vývojovém prostředí Visual Studio 2010 Premium (VS) a zahrnuje tři fáze –

fyzickou definici tabulek, stanovení referenční integrity a integritních omezení a

naplnění tabulek konkrétními daty.

6.1 Vytvoření tabulekPřed samotným vytvářením tabulek je nutné přidat SQL databázi do aplikace.

V ASP.NET je pro tyto účely zřízena speciální složka App_Data. Do této složky se

pomocí kontextové nabídky a volby Add New Item přidá příslušný MDF soubor

s databází. Následně je v okně Server Explorer třeba vytvořit nové připojení volbou Add

Connection , namapovat daný soubor a definovat autentizační pravidla pro přístup

k databázi.

Tabulky jsou uloženy ve složce Tables. Pro jejich vytvoření lze v kontextové

nabídce složky použít volbu Add New Table a definovat každou z nich jednotlivě

v grafickém uživatelském rozhraní tabulky, nebo vytvořit SQL dotaz pomocí volby New

Query a definovat je dávkově.

Při vytváření tabulek používám první možnost, jelikož nabízí komfortní grafické

uživatelské rozhraní, které umožňuje definici tabulky tzv. „naklikat“, a není nutné ji

tvořit manuálně. Rovněž případné změny v definici tabulky lze tímto způsobem provést

rychleji.

Obrázek 6.1: Databázové tabulky

Page 43: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

45

6.2 Referenční integrita a integritní omezeníReferenční integrita databáze vychází z jejího fyzického modelu. Ve většině

tabulek se definují tzv. cizí primární klíče z jiných tabulek. Jedná se o jedno

u integritních omezení. Pomocí těchto klíčů je zajištěno propojení dvou určitých

tabulek, jejichž data jsou na sobě závislá. Tabulka, v níž je umístěn cizí klíč je

označována jako podřízená (slave), druhá tabulka naopak jako nadřízená (master).

Příkladem referenční integrity v navržené databázi je propojení tabulek Zakaznik a

Rezervace. Tabulka Rezervace definuje jako cizí klíč atribut ZakaznikId, který je

zároveň primárním klíčem v tabulce Zakaznik. Při smazání záznamu v tabulce Zakaznik

se smažou také všechny záznamy v tabulce Rezervace. V realitě to znamená, že pokud

je zákazníkův účet smazán, smažou se s ním i všechny jeho aktuální rezervace, jelikož

jejich uchovávání v databázi už dále není relevantní.

Kromě integritního omezení pomocí cizích klíčů se v databázi používá i řada

dalších. Například v tabulce Zamestnanci, v níž se uchovávají záznamy zaměstnanců

obsluhy restaurace, je pro všechny atributy hodnota allow nulls nezaškrtnuta, což je

ekvivalentem k nastavení integritního omezení not null.

Obrázek 6.2: Definice tabulky Rezervace pomocí GUI

Page 44: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

46

6.3 Naplnění tabulek datyPři naplňování tabulek daty postupuji analogickým způsobem jako při definici

samotných tabulek. I zde upřednostňuji práci přímo v grafickém uživatelském rozhraní

dané tabulky před manuálním sestavováním SQL dotazu.

V seznamu tabulek pomocí kontextové volby Show Table Data u vybrané tabulky

zobrazím aplikační okno s jednotlivými záznamy. Před vkládáním samotných dat je

vhodné v aplikačním okně s definicí tabulky nastavit vlastnost Identity Column

na název sloupce s primárním klíčem. Díky tomu se při vkládání jednotlivých záznamů

automaticky vyplní hodnota primárního klíče.

Obrázek 6.3: Referenční integrita v tabulce Rezervace

Obrázek 6.4: Naplnění tabulky Zakaznici daty

Page 45: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

47

7 Implementace aplikaceV této kapitole se zabývám fázemi implementace rezervačního systému

restaurace. V první části kapitoly řeším vytvoření rámce aplikace s využitím technologie

Masterpages, její propojení s daty v SQL databázi a začlenění komponent ASP.NET

Web Controls do jednotlivých webových stránek a jejich funkci v nich. Ve druhé části

se zabývám problematikou vzhledu aplikace s využitím technologie CSS a ASP.NET

Themes and Skins. Na závěr testuji funkčnost aplikace a popisuji její distribuci na web.

7.1 Rámec aplikace pomocí MasterpagesAplikace je od začátku vyvíjena tak, aby její grafický rámec byl univerzální.

Jednotlivé webové stránky mají jednotné grafické rozložení. To zajišťuje použití

technologie Masterpages. Rámec aplikace je definován v souboru Default.master. Tento

soubor definuje tzv. master stránku, která slouží jako šablona vzhledu pro všechny

stránky obsahu aplikace:

Obrázek 7.1: Zdrojový kód stránky Default.master

Page 46: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

48

V horní části zdrojového kódu je definován ovládací prvek loginview. Jeho

vlastnost LoggedInTemplate umožňuje zobrazit v pravém horním rohu každé stránky

uživatelské jméno aktuálně přihlášeného uživatele. Analogickou funkci má ovládací

prvek LoginStatus, který zobrazuje pod aktuálním uživatelským jménem odkaz odhlásit

pro odhlášení z aplikace.

Nejdůležitějším ovládacím prvkem na stránce je contentplaceholder, který určuje

oblast master stránky, jejíž obsah definuji individuálně pro každou stránku obsahu

(contentpage). Například na stránce Default.aspx je tento prostor vyplněn fotografií

restaurace, zatímco stránka RememberPass.aspx v něm zobrazuje formulář pro zaslání

zapomenutého hesla.

V kódu master stránky jsou také definovány prvky sitemapdatasource a

SiteMapPath. Tyto prvky zobrazují na každé stránce tzv. webovou navigaci, která

ukazuje přihlášenému uživateli jeho aktuální pozici v rámci aplikace.

7.2 Propojení aplikace a SQL databázePro práci s daty uloženými v SQL databázi používám speciální ovládací prvek

SQLDataSource. Název prvku je trochu zavádějící, jelikož slouží nejen pro přístup

k datům SQL serveru, ale obecně ho lze využít pro připojení k relačnímu zdroji dat,

který je přístupný přes OLEDB/ODBC rozhraní. Tento prvek využívám například

na stránce Rezervation.aspx, která slouží k zobrazení rezervací. V případě uživatele

s rolí zákazník jde pouze o vlastní rezervace, u ostatních rolí o rezervace všech

zákazníků.

Ovládací prvek SQLDataSource lze jednoduše přetáhnout do stránky z panelu

ovládacích prvků Toolbox. Po přepnutí do tzv. design modu se prvek zobrazí ve stránce

ve formě obdélníkového prvku. Výběr možnosti Configure Data Source z kontextové

nabídky zobrazí konfiguračního průvodce, ve kterém definuji zdroj dat (databáze

ASPNETDB) a konkrétní tabulky a jejich sloupce, ze kterých se mají data zobrazit.

Na obrázku níže je zobrazena konfigurace přístupu k datům z tabulky Rezervace.

V tomto případě vybírám z tabulky všechny sloupce, jelikož nastavuji přístup k datům

pro Administrátora a Zaměstnance, kterým se mají zobrazovat všechny uložené

rezervace.

Analogický postup používám při vytváření datových zdrojů ve všech stránkách

aplikace, na kterých lze operovat s daty uloženými v databázi ASPNETDB.

Page 47: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

49

7.3 Začlenění komponent ASP.NET Web ControlsV aplikaci používám různé typy webových ovládacích prvků. Většina z nich se

váže pouze k jedné webové stránce. Jejich funkcionalita tedy je kompletně

implementovaná pouze v rámci této stránky. Mezi takové prvky patří např. Login, který

je součástí domovské stránky aplikace Default.aspx. Prvek má funkci přihlašovacího

elementu, který zobrazuje pole pro zadání uživatelského jména, hesla apod. Zobrazuje

se na domovské stránce, a to pouze v případě, že na stránky přistupuje anonymní

uživatel.

Další menšinovou skupinu tvoří prvky, které jsou implementovány do všech

stránek aplikace. Příkladem takového prvku je SiteMapPath. Ten je umístěn ve stránce

šablony Default.master. V důsledku toho je součástí všech stránek obsahu, protože ty se

zakládají na master šabloně.

Nejspecifičtější použitou skupinou prvků jsou ty, u nichž je do každé ze stránek

implementovaná pouze jejich určitá část. Takovým typickým prvkem je LoginView.

Slouží k rozlišení obsahu dané stránky pro přihlášené a anonymní uživatele. Pro tento

účel má definovány vlastnosti LoggedInTemplate a AnonymousTemplate. V aplikaci

Obrázek 7.2: Přístup k datům z tabulky Rezervace

Page 48: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

50

využívám jeho vlastnost LoggedInTemplate ve stránce Default.master. Obsah

definovaný touto vlastností se tak zobrazuje na všech stránkách aplikace, konkrétně jde

o hlavní levé menu. Vlastnost AnonymousTemplate pak implementuji pouze do stránky

Default.aspx, jelikož anonymní uživatel nemá možnost bez přihlášení zobrazit jinou

stránku.

7.4 Vzhled aplikaceVzhled aplikace je tvořen dvěma základními technologiemi, a to CSS a ASP.NET

Themes and Skins. CSS používám pro formátování aplikace na úrovni jednotlivých

html elementů a ASP.NET Themes and Skins na úrovni ovládacích prvků.

Všechny soubory použité pro formátování jsou uloženy v aplikační složce

App_Themes. Všechny použité CSS třídy jsou definované v souboru Default.css.

Společné vlastnosti jednotlivých tříd jsou sdruženy do jediného bloku kódu. Zmenšuje

se tak velikost příslušného CSS souboru a zrychluje načítání formátování.

Obrázek 7.3: Ovládací prvek Login

Obrázek 7.4: Vlevo – umístění souborů, vpravo – Ukázka CSS kódu

Page 49: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

51

Definice všech motivů (Themes) a vzhledů (Skins) jsou definované v souboru

Default.skin.

Pro každý typ ovládacího prvku, v tomto případě ImageButton (tlačítko

s obrázkem), GridView (datová mřížka resp. tabulka) a Image (obrázek) se definuje

vzhled s unikátním SkinID. Pro většinu ovládacích prvků definuje několik různých

vzhledů. Při vytvoření nového prvku daného typu mu pak pomocí jeho vlastnosti skinID

nastavuji příslušný vzhled.

7.5 Distribuce aplikace na webAplikace je umístěna na webovém portále ASPone.cz. Tento portál jsem si vybral

proto, že poskytuje takové freehostingové služby, které plně vyhovují technologickým

požadavkům na provoz aplikace. Po registraci zákaznického účtu a objednávky domény

umožňuje provést kompletní konfiguraci webu, která zahrnuje především zřízení FTP

účtu pro přístup do webového prostoru aplikace a vytvoření MSSQL 2008 databáze.

Následující tabulka shrnuje základní informace o konfiguraci aplikace:

Zdrojové soubory aplikace umísťuji na web přímo pomocí vývojového prostředí

Visual Studio volbou Copy Web Site v programové nabídce Website.

Webová doména restauracedk.aspone.cz

Databáze MSSQL 2008

Přednastavené uživatelské účty v

aplikaci

RoleUživatelské

jménoHeslo

administrátor Admin admin_1

zákazník Zakaznik zakaznik_1

zaměstnanec Zamestnanec zamestnanec_1

Obrázek 7.5: Ukázka kódu definující vzhledy

Page 50: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

52

ZávěrV průběhu zpracování projektu Databázová aplikace pomocí ASP.NET se mi

podařilo vytvořit rezervační systém restaurace s definovanou funkcionalitou.

Za pomoci odborné literatury a internetových zdrojů jsem vytvořil teoretickou

část, která vypovídá o charakteristice technologie ASP.NET. Podrobněji jsem se

věnoval využití serverových ovládacích prvků v kapitole Komponenty ASP.NET Web

Controls a dále jejich začlenění do aplikace. Další důraz jsem v této práci kladl

na funkci a systém uživatelských rolí, na jejichž základě mohou uživatelé ovládat

příslušné části a funkce, které aplikace nabízí. Popisu rolí se věnuji především

v kapitolách Funkční požadavky IS a Funkcionalita.

Přínosem bakalářské práce je rozšíření standardních řešení rezervačních systémů

restaurací. Mnou navržený rezervační systém vychází z obvyklé funkce rezervace stolů

online. Navíc však zákazníkům poskytuje další možnosti – primárně jde o rezervaci

místa v restauraci, u kterého si lze sekundárně navolit z nabídky zaměstnanců

soukromou obsluhu a nabízená menu restaurace. Systém dále umožňuje objednání menu

online s dovážkou.

Výsledkem je aplikace, která je navržena a vytvořena jako obecné řešení

s předpokladem dalšího rozšiřování.

Page 51: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

53

Seznam použitých zdrojů[1] BABIUCH, Marek. Programování aplikací pro internet II [online]. Ostrava : VŠB

TU Ostrava, 2007. 179 s. Učební text. VŠB TU Ostrava. Dostupné z WWW:

<http://www.elearn.vsb.cz/archivcd/FS/PAI2/PaPi_UcebniText.pdf>.

[2] BĚHÁLEK, Marek. Programovací jazyk C# [online]. Ostrava : VŠB-TU Ostrava,

2007. 144 s. Učební text. TU Ostrava, VŠB-FEI, katedra informatiky. Dostupné z

WWW: <http://www.cs.vsb.cz/behalek/vyuka/pcsharp/text.pdf>.

[3] BLÁZA, Jiří. PHP 5: začínáme programovat. První vydání. Praha : Grada

Publishing a.s., 2005. 244 s. ISBN 80-247-1146-X.

[4] C# Language Specification 4.0 [online]: Microsoft Corporation, 2010 [cit. 2011-

10-01]. Dostupné z WWW:<http://www.microsoft.com >.

[5] DVOŘÁK, Jiří. Vícekriteriální rozhodování [online]. Brno : VUT Brno, 2007. 18

s. PPT výuková prezentace. VUT Brno, fakulta strojního inženýrství. Dostupné z

WWW: <www.uai.fme.vutbr.cz/~jdvorak/vyuka/osa/Vicekrit.ppt>.

[6] HERCEG, Tomáš. Visual Basic .NET : .NET Framework od začátku [online].

2009, 19-7-2010 [cit. 2011-10-1]. Dostupné z WWW:

<http://www.vbnet.cz/serial--13-net_framework_od_zacatku.aspx>.

[7] HERNANDEZ, Michael J. Návrh databází. Přeložil Jan Bouda. Praha : Grada

Publishing a.s., 2006. 408 s. ISBN 80-247-0900-7.

[8] MAHMOUD, Qusay H. Http://www.oracle.com [online]. 2003, last updated

2010-7-16 [cit. 2011-11-12]. Servlets and JSP Pages Best Practices. Dostupné z

WWW: <http://www.oracle.com/technetwork/articles/javase/servlets-jsp-

140445.html>.

[9] Microsoft. Microsoft MSDN : ASP.NET 4 [online]. 2010 [cit. 2011-10-10].

Dostupné z WWW: <http://msdn.microsoft.com/en-us/library/ee532866.aspx>.

[10] Microsoft. Microsoft MSDN [online]. 2007 [cit. 2011-12-5]. Základy normalizace

databáze. Dostupné z WWW: <http://support.microsoft.com/kb/283878/cs>.

[11] On-line rezervační systém pro restaurace [online]. 2010 [cit. 2011-11-13].

Dostupné z WWW: <http://www.rezervujstul.cz/>.

[12] PHP : PHP Manual [online]. 2001, Last updated: Fri, 04 Nov 2011 [cit. 2011-11-

06]. Dostupné z WWW: <http://www.php.net/manual/en/>.

Page 52: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

54

[13] Podpůrný zdroj obrázku pro rezervační systém: Google.cz : Obrázky Google

[online]. 2011, 2011 [cit. 2011-12-7]. Dostupné z WWW:

<http://www.google.cz/imghp?hl=cs&tab=ii>.

[14] SHEPHERD, George. Microsoft® ASP.NET 4Step by Step eBook[online]. USA:

Microsoft Press, 2010 [cit. 2011-11-2]. Dostupné z WWW: <

http://shop.oreilly.com/product/9780735627017.do >.

[15] SPAANJAARS, Imar. Beginning ASP.NE T 4 in C# and VB eBook[online]. USA :

Wiley Publishing, Inc., 2010 [cit. 2011-10-2]. Dostupné z WWW: <

http://www.apress.com/9781430226086 >.

[16] Sun Microsystems. JavaServer Pages Specification [online]. version 2.2. Sun

Microsystems : Sun Microsystems, 2009-5-8 [cit. 2011-11-06]. Dostupné z

WWW: <http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html>.

[17] VICK, Paul, WISCHIK, Lucian. Visual Basic Language Specification 10.0

[online]. Microsoft: Microsoft Corporation, 2010 [cit. 2011-10-01]. Dostupné z

WWW: <http://www.microsoft.com/download/en/details.aspx?id=15039>.

[18] VOREL, Milan. VašeWebovky.cz [online]. 2010 [cit. 2011-11-13]. Dostupné z

WWW: <http://www.vasewebovky.cz/>.

[19] Webový vývoj v ASP.NET 2.0 pomocí bezplatných Express nástrojů pro úplné

začátečníky [online]. Česká republika: Microsoft, 2005 [cit. 2011]. Dostupné z

WWW: <http://download.microsoft.com/download/4/B/1/4B1337D6-B0B0-4535-

B72E-417FE4D8251F/ASP_NET2_pro_zacatecniky.pdf>.

Page 53: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

55

PřílohyA. Terminologický slovníkB. Obsah CD

C. Ukázky uživatelského rozhraní

D. Ukázky rezervačních systémů

Page 54: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

56

A. Terminologický slovník

ADO.NET – ActiveX Data Object for .NET

ASP – Active Server Pages

BCL – Basic Class Library

CIL – Common Intermediate Language

CLR – Common Language Runtime

CLS – Common Language Specification

CSS – Cascading Style Sheets

CTS – Common Type Systém

DLL – Dynamic-Link Library

EXE - Executable

JIT – Just In Time

JSP – Java Server Pages

MSIL – Microsoft Intermediate Language

OOP – Object-Oriented Programming

PHP – Hypertext Preprocessor

SŘBD – Systém řízení báze dat

VB .NET – Visual Basic .NET

VBScript – Visual Basic Script

Page 55: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

57

B. Obsah přiloženého CD

Adresář Obsah

/text bakalářská práce ve formátu pdf

/obrazky obrázky použité v bakalářské práci

/aplikace zdrojové soubory aplikace

Page 56: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

58

C. Ukázky uživatelského rozhraní

Obrázek C.1: Přihlašovací obrazovka

Obrázek C.2: Registrace nového uživatele

Page 57: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

59

D. Ukázky rezervačních systémů

Obrázek D.1: Rezervační systém RezervujStul.cz

Page 58: Vysoká škola ekonomická v Praze Fakulta informatiky a ...info.sks.cz/www/zavprace/soubory/2012/76960.pdf · Klíčová sl ova: Databáze, aplikace, ASP.NET, rezervační systém

60

Obrázek D.2: Katalog restaurací a rezervační systém Rezervator.cz