vysoká škola ekonomická v praze fakulta informatiky a...
TRANSCRIPT
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
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
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.
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.
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
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
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.
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.
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í.
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
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]
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.
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]
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]
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
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>.
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
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
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
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.
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]
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
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
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]
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
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.
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.
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.
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ě.
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
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
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
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
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é.
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ů.
38
5.2 Případy užití
Obrázek 5.1: Případy užití aplikace
39
5.3 Přihlášení uživatele
Obrázek 5.2: Diagram aktivit přihlášení uživatele
40
5.4 Vytvoření rezervace
Obrázek 5.3: Diagram aktivit vytvoření rezervace
41
5.5 Diagram tříd
Obrázek 5.4: Diagram tříd
42
5.6 Stavový diagram
Obrázek 5.5: Stavový diagram
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í
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
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
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
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
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.
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
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
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
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í.
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/>.
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>.
55
PřílohyA. Terminologický slovníkB. Obsah CD
C. Ukázky uživatelského rozhraní
D. Ukázky rezervačních 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
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
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
59
D. Ukázky rezervačních systémů
Obrázek D.1: Rezervační systém RezervujStul.cz
60
Obrázek D.2: Katalog restaurací a rezervační systém Rezervator.cz