Technologie ASP.NET. Martin Trněný



Podobné dokumenty
Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Nové jazykové brány do Caché. Daniel Kutáč

Seznámení s prostředím dot.net Framework

Microsoft Office 2003 Souhrnný technický dokument white paper

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Kapitola 1: Co je Microsoft Access? 27 Kapitola 2: Mnoho tváří aplikace Microsoft Access 41 Kapitola 3: Návrh databázové aplikace 75

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Vladimír

C# - Databáze úvod, ADO.NET. Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí

Společnost Xerox vytváří škálovatelné, hostované řešení pro optimalizaci globální správy tiskových aktiv

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Maturitní otázka webové stránky (technologie tvorby webu) Co znamená pojem Web? Web, www stránky, celým názvem World Wide Web,

Technologie Java. Jaroslav Žáček

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Programovací jazyky Přehled a vývoj

Servlety a JSP. Petr Adámek, petr.adamek@ibacz.eu

Nástroje a frameworky pro automatizovaný vývoj. Jaroslav Žáček jaroslav.zacek@osu.cz

Obsah Úvod... 9 Visual Basic.NET 2003 na první pohled Visual Basic.NET 2003 Základy programování v jazyce Visual Basic.NET

Programování v jazyku C# II. 5.kapitola

Platformy / technologie. Jaroslav Žáček jaroslav.zacek@osu.cz

TÉMATICKÝ OKRUH TZD, DIS a TIS

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Semináˇr Java X J2EE Semináˇr Java X p.1/23

KAPITOLA 3. Architektura aplikací na frameworku Rails. V této kapitole: modely, pohledy, řadiče.

Databázové aplikace pro internetové prostředí PHP úvod, základní princip, vkládání skriptu, komentáře, výpis na obrazovku

Programovací jazyk Úvod do programování v C#

Server-side technologie pro webové aplikace

InterSystems Caché Post-Relational Database

Programovací jazyk C# Úvod do programování v C#

Kentico CMS. Hledáte rychlý, snadný a efektivní způsob jak si vytvořit firemní web? Dál už hledat nemusíte. Snadné použití pro marketéry

VYUŽITÍ REGIONÁLNÍCH FUNKCÍ A WWW ROZHRANÍ V INTEGROVANÉM KNIHOVNÍM SYSTÉMU KPWINSQL

Komponentní technologie

MS ACCESS A MS WORD V KAŽDODENNÍ PRAXI

Programovací jazyk C# Úvod do programování v C#

Sem vložte zadání Vaší práce.

Obsah. Stručná historie World Wide Webu 7

Instalace a konfigurace web serveru. WA1 Martin Klíma

Informační systém pro rezervaci pokojů hotelu SPORT

Compatibility List. GORDIC spol. s r. o. Verze

Obchodní podmínky technické podpory programu ESRI Developer Network (EDN)

Tvorba informačních systémů

Architektura aplikace

BankKlient. FAQs. verze 9.50

SharePoint 2010 produktové portfolio a licencování

Malý průvodce Internetem

Databázové systémy trocha teorie

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Tvorba informačních systémů

Úvod do aplikací internetu a přehled možností při tvorbě webu

Michal Krátký, Miroslav Beneš

Tvorba podnikových aplikací v jazyce JAVA. Josef Pavlíček KII PEF CZU

Statistica, kdo je kdo?

IBM TRIRIGA Application Platform Verze 3 Vydání 4.2. Příručka instalace a implementace

Software je ve světě IT vše, co není Hardware. Do softwaru patří aplikace, program, proces, algoritmus, ale i data (text, obrázky), operační systém

Tvorba pluginu Licensing do informačního systému Helios Orange

Architektury informačních systémů

Vysoká škola ekonomická v Praze Fakulta informatiky a statistiky Vyšší odborná škola informačních služeb v Praze

language="javascript">... </script>.

Architektury informačních systémů

VNITŘNÍ POKYN Č. 3/2004 PROVOZNÍ ŘÁD POČÍTAČOVÉ SÍTĚ

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

Název Popis Lhůta. dne Odmítnuté platby Zobrazení, tisk a export seznamu odmítnutých plateb. Informace připraveny k vyzvednutí z bankovního

Informační systémy 2008/2009. Radim Farana. Obsah. Aktivní serverové stránky ASP. Active Server Pages. Activex Data Objects. LDAP database.

KIV/PIA Semestrální práce

Databázový systém Matylda

PREPROCESOR POKRAČOVÁNÍ

1. Jak pracuje počítač 3. Už víme, jak pracuje počítač, ale jak se pracuje s počítačem? 9

KIV/PIA 2013 Jan Tichava

ADMINISTRACE POČÍTAČOVÝCH SÍTÍ. OPC Server

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Kolaborativní aplikace

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

Individuální projekt z předmětu webových stránek Anketa Jan Livora

Registrační číslo projektu: CZ.1.07/1.5.00/ Název projektu: Moderní škola 21. století. Zařazení materiálu: Ověření materiálu ve výuce:

Architektura. Vedení sesterské dokumentace

MYBIZ - Řešení pro zpřístupnění dat ze stávajících aplikací na mobilních zařízeních (Mobilize your business!) Požadavky zákazníka.

Vývoj informačních systémů. Architektura, návrh Vzory: Doménová logika

DB2 Connect verze 9.5


MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

Skriptovací jazyky. Obsah

1. Distribuce Javy. 2. Vlastnosti J2EE aplikace. 3. Fyzická architektura J2EE aplikace. Distribuce Javy se liší podle jejího zamýšleného použití:

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

ROZVOJ ICT A PDA ZAŘÍZENÍ THE DEVELOPMENT OF ICT AND PDA DEVICES Jiří Vaněk

Analýza dat na PC I.

IMPLEMENTACE SYSTÉMU GROUPWISE NA PEF ČZU V PRAZE IMPLEMENTATION OF THE SYSTEM GROUPWISE ON THE PEF ČZU PRAGUE. Jiří Vaněk, Jan Jarolímek


Datec News 2012/1. Moderní marketingové technologie v řešení Datec Retail Solutions. OBSAH Datum vydání:

MATURITNÍ PRÁCE dokumentace

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

10. Editor databází dotazy a relace

Vysoká škola ekonomická v Praze

UNIVERZITA PARDUBICE DOPRAVNÍ FAKULTA JANA PERNERA

DUM 02 téma: Úvod do textového editoru MS Word a výběr klávesových zkratek

InTouch 8.0 Subsystém distribuovaných alarmů

Transkript:

České vysoké učení technické v Praze Fakulta elektrotechnická Bakalářská práce Technologie ASP.NET Martin Trněný Vedoucí práce: Doc. Ing. Ivan Jelínek, CSc. Studijní program: Elektrotechnika a informatika strukturovaný bakalářský Obor: Informatika a výpočetní technika červen 2008

ii

Poděkování Rád bych poděkoval vedoucímu mé práce panu Doc.Ing. Ivanu Jelínkovi, Csc., za ochotu v průběhu realizace bakalářské práce. Největší část ovšem patří mé přítelkyni Evě, která musela být poslední půlrok enormně trpělivá. Přesto mi byla velkou oporou v průběhu tvorby bakalářské práce. V neposlední řadě děkuji mé rodině za trpělivost a podporu. iii

iv

Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne 1.6. 2008... v

vi

Abstract The main aim of this thesis is taking up with a technology for creation web applications the ASP.NET and a technology for data access ADO.NET, which contains.net Framework. By the help of ASP.NET and ADO.NET technologies I designed, implemented and tested web pages for a software company. The Part of the work is also analyse technologies for creation web applications like PHP and JSP. Abstrakt Hlavním cílem této bakalářské práce je seznámení se s technologií pro tvorbu webových aplikací ASP.NET a technologie přístupu k datům ADO.NET, kterou obsahuje.net Framework. Pomocí technologií ASP.NET a ADO.NET jsem navrhl, implementoval a otestoval webové stránky pro softwarovou firmu. Součástí práce je také analýza podobných technologií pro tvorbu webových aplikací jako je PHP a JSP. vii

Obsah Seznam obrázků xi Seznam tabulek xii 1 Proč právě ASP.NET od firmy Microsoft? 1 2 Úvod do technologie ASP.NET 2 2.1 Počátky webového vývoje... 2 2.2 Web před nástupem ASP.NET... 2 2.3 Historie ASP - ASP.NET... 3 2.4 Jak funguje ASP.NET... 3 2.4.1.NET framework... 5 2.4.2 CLR Common Language Runtime... 6 2.5 Základní charakteristika jazyka C#... 7 2.6 Základní charakteristika jazyka VB.NET... 7 3 Přístup k datům ADO.NET 9 3.1 Základ ADO.NET... 9 3.2 Poskytovatelé dat ADO.NET... 10 3.3 Připojené a odpojené aplikace... 11 3.3.1 Připojená aplikace... 11 3.3.2 Odpojená aplikace... 12 4 ASP.NET a konkurence 14 4.1 Technologie možné jako konkurence... 14 4.2 JSP (JAVA SERVER PAGES)... 15 4.2.1 Srovnání JSP a ASP.NET... 17 4.3 PHP ( Hypertext Preprocesor )... 18 4.3.1 Srovnání PHP a ASP.NET... 22 4.3.1.1 Vnitřní struktura... 22 4.3.1.2 Podporované jazyky... 22 4.3.1.3 Kód na straně serveru... 23 4.3.1.4 Objekty a webové služby... 23 4.3.1.5 Shrnutí... 23 4.4 Shrnutí konkurenčních technologií... 24 5 Návrh webových stránek 25 5.1 Společnosti a internetové stránky... 25 5.2 Na které vlastnosti je kladen důraz a co nesmí chybět... 25 5.3 Zadání... 26 5.3.1 Informace o společnosti MISS Software, pro kterou navrhuji webové stránky... 26 5.4 Vlastní návrh... 26 6 Implementace 28 6.1 Menší odbočka Express Edice... 29 6.2 Konkrétně o implementaci... 29 7 Testování 30 7.1 Funkčnost stránek... 30 viii

7.2 Validita... 30 7.3 Korektnost... 30 7.4 Odolnost databáze... 30 8 Závěr 31 8.1 Splnění cílů... 31 8.2 Další vývoj aplikace... 31 9 Seznam Literatury 33 A Seznam použitých zkratek 36 B Uživatelská příručka 38 C Obsah přiloženého CD 39 ix

x

Seznam obrázků Obrázek 2.1: Kompilace webové stránky ASP.NET [1]... 4 Obrázek 2.2. Struktura celého.net frameworku [13]... 5 Obrázek 2.3: Common Language Runtime - kompilace a spuštění [2]... 6 Obrázek 3.1: Architektura ADO.NET [1]... 11 Obrázek 3.2: Schéma připojené aplikace... 12 Obrázek 3.3: Schéma odpojené aplikace... 13 Obrázek 4.1: JSP princip činnosti... 16 Obrázek 4.2: Princip činnosti PHP [12]... 20 Obrázek 6.1: Microsoft Visual Web Developer 2008 Express Edition [13]... 28 xi

Seznam tabulek Tabulka 3.1: Zdrojový kód jazyka C#... 7 Tabulka 3.2: Zdrojový kód jazyka VB.NET... 8 Tabulka 4.1: Zdrojový kód JSP... 17 Tabulka 4.2: Zdrojový kód PHP... 21 xii

xiii

1 Proč právě ASP.NET od firmy Microsoft? Mnoho z vás zběhlých v oblasti IT by si mohla položit právě tuto otázku. Už jen slovo Microsoft je pro někoho strašák ne-li noční můra. Produkty firmy Microsoft jsou považovány za výlučně komerční a mnohdy také proto jsou lidmi odsuzovány. Další stinnou stránkou produktů firmy Microsoft může být jejich celosvětové používání a z toho plynoucí odhalování i těch nejmenších a nejnepravděpodobnějších chyb. Což samozřejmě běžného uživatele velmi odrazuje. Za komerční produkty se platí, ale není pravidlem, že za vše komerční musíme platit. Microsoft si i v případě ASP.NET uvědomil, sice později ale přece, nutnost uvést na trh produkty volně ke stažení tj. zdarma. Určeny jsou pro ty, kteří si chtějí danou technologii vyzkoušet, používat pro osobní potřebu a nechtějí za ni utrácet peníze. Bez možnosti zdarma si vyzkoušet danou technologii, je spousta lidí odrazena placením za něco, co ve skutečnosti nebudou potřebovat nebo jim nebude vyhovovat. ASP.NET tedy díky pozdějšímu uvedení produktové řady Express, která je k dispozici zdarma ke stažení a díky malému počtu serverů určeného pro hostování a provozování webových aplikací na platformě Microsoft.NET tzv. webhosting, ale zejména freehosting, se rozšiřuje pomalu. ASP.NET podle mého názoru přinesla do vytváření webových stránek nový proud. Proud skutečného OOP. Schopnost dívat se na vytváření webových stránek, jako na vývoj běžné okenní aplikace, dává náskok před konkurencí, která nemá, tak koncepčně vyřešené své produkty. 1

2 Úvod do technologie ASP.NET Úvodem by se patřilo ozřejmit několik pojmů související s vývojem internetu. Projdeme si také v rychlosti historickou cestu webového vývoje, která nás dovede až k ASP.NET. 2.1 Počátky webového vývoje První přenos dat přes HTTP uskutečnil Tim Bernes-Lee už před více než deseti lety. Tim Bernes-Lee předsedá mezinárodnímu konsorciu W3C a je autorem nebo spoluautorem služby WWW a specifikací URL, HTTP a HTML - základních pilířů Webu. Od té doby zaznamenalo HTTP prudký růst popularity a proniklo téměř do všech sfér lidského života. Když bylo HTTP zřízeno poprvé, nebylo jednoduché navrhovat aplikace, které se uměly vyhledat a vzájemně spolu komunikovat. Proto byly pro vývojáře vytvořeny různé standardy, jako je HTML nebo XML. HTML definovalo prostý jazyk, jak popsat a zobrazit složité dokumenty na prakticky jakékoliv počítačové platformě. XML naproti tomu tvořilo sadu pravidel, pro vytváření formátů dat nezávislých na platformě, díky níž si mohou různé aplikace vyměňovat informace. Standardy garantovaly, že web mohl využívat kdokoliv, odkudkoliv, a s jakýmkoliv typem operačního systému. Výrobci softwaru měli před sebou výzvu. Potřebovali vyvinout takové jazyky a programovací nástroje, které by uměly komunikovat s webem. Největší výrobci softwaru IBM, Microsoft nebo Sun Microsystems urputně sváděly boj, kdo přijde s lepším produktem, a proto se jich zde nahromadila celá řada. 2.2 Web před nástupem ASP.NET Starší technologie určené pro webové aplikace byly založené na serveru a spoléhaly se na skriptovací jazyky nebo na proprietární konvence značkování. Neposkytovaly moderní a integrovaný pracovní rámec pro webové programování. Obecně můžeme pracovní rámce pro webový vývoj před ASP.NET rozdělit do dvou skupin: Skripty interpretované na serveru Oddělené, malé aplikace, které se vykonávají voláním na straně serveru Klasické ASP patří do první skupiny. Vývojář má za úkol vytvořit soubor se skriptem, který obsahuje vložený kód. Tento soubor je pak zpracováván komponentou, která střídá zpracování běžného HTML kódu a vykonávání vloženého kódu. Skriptované aplikace se provádějí pomaleji než aplikace zkompilované. Principy druhé skupiny využívá ve značné míře Perl (Perl je interpretovaný programovací jazyk vytvořený Larry Wallem v roce 1987, používá se pro tvorbu CGI skriptů.), který také přináší další problémy. V těchto pracovních rámcích spouští webový server oddělenou aplikaci, která má za úkol zpracovat požadavek klienta. Přestože se tyto aplikace vykonávají rychleji než skriptované verze, vykazují větší tendenci spotřebovávat více paměti, jsou méně škálovatelné, hůř se píší a není snadné je integrovat s jinými komponentami. 2

2.3 Historie ASP - ASP.NET Za počátek můžeme vzít rok 1996 a technologii ASP od Microsoftu, která byla svými možnostmi velmi podobná jazyku PHP. ASP je technologie nezávislá na programovacím jazyce, která umožňuje vykonávání kódu na straně serveru a následné odeslání výsledku uživateli. To znamená, že webová stránka s příponou.asp obsahuje kód, vykonávaný na IIS serveru a prohlížeči odešle pouze výsledek ve značkovacím jazyce HTML, který umí bez problému zobrazit. Programovací jazyky, které se u technologie ASP používají nejvíce jsou: VBScript a JScript. ASP ale představovalo narychlo sestavenou sadu nástrojů pro vkládání dynamického obsahu do obyčejných webových stránek, proto postupem času přestalo vyhovovat a nestačilo pro vývoj moderních webových stránek. Vydány byly tři verze: 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 Dalším milníkem bylo vydání ASP.NET. Je nástupcem technologie ASP a přímým konkurentem JSP. Blíže se s ASP.NET seznámíme dále v textu. Přehled vydaných verzí: ASP.NET verze 1.0 (součást rozhraní.net Framework) v lednu 2002 ASP.NET verze 1.1 v dubnu 2003 ASP.NET verze 2.0 v listopadu 2005 ASP.NET verze 3.5 v prosinci 2007 Převratnou se stala verze 1.0 a její doplnění na verzi 1.1. Důkazem jejich dobrého návrhu je i to, že pouze velmi málo změn v ASP.NET 2.0 jsou opravami existujících schopností. ASP.NET 2.0 se zaměřuje především na přidávání nových funkcionalit a zredukování počtu řádků kódu, které musíme napsat, až o 50 procent. 2.4 Jak funguje ASP.NET Ačkoliv název ASP.NET je odvozen od starší technologie pro vývoj webů ASP, obě technologie mají jen pramálo společného. ASP.NET přichází s kompletně novým vývojovým modelem. Hlavní rozdíl je v tom, že je do hloubky integrováno se svým podkladovým pracovním rámcem. ASP.NET je založen na CLR (Common Language Runtime), který je sdílen všemi aplikacemi postavenými na.net Frameworku. Aplikace založené na ASP.NET se neinterpretují, ale kompilují do jednoho či několika málo DLL (Dynamic-link library) souborů tzv. assembly (což je termín.net pro jakoukoliv jednotku zkompilovaného kódu). Díky tomu je možné napsat kód pro webovou stránku i v poznámkovém bloku, zkopírovat jej přímo do nějakého virtuálního adresáře na webovém serveru a aplikace se dynamicky zkompiluje, jakmile k ní přistoupí nějaký klient a její kopie se uloží do cache pro potřeby budoucích požadavků. Jestliže se po kompilaci jakýkoliv ze souborů změní, aplikace se automaticky překompiluje, jakmile ji bude nějaký klient vyžadovat. Na rozdíl od ryze skriptovacích jazyků, kde jsou stránky při každém přístupu znovu a znovu parsovány. 3

Aplikace ASP.NET procházejí dvěma kompilačními etapami. V první etapě se kód v jazyce C# nebo ve VB.NET (Visul Basic.NET), zkompiluje do přechodného jazyka, který se nazývá jako Microsoft Intermediate Language (MSIL), také jen IL. Tento první krok je fundamentální příčinou toho, že v.net je možné používat různé programovací jazyky. Všechny jazyky.net (včetně C#, Visual Basicu, a mnoha dalších) se totiž zkompilují do virtuálně identického kódu IL. První kompilační krok může nastat automaticky, když se stránka poprvé požaduje, nebo se může vykonat předem (to je proces, kterému se říká předběžná kompilace, precompiling). Zkompilovanému souboru s kódem IL se říká assembly. Druhá úroveň kompilace nastává těsně předtím, než se stránka skutečně vykoná. V tomto okamžiku se kód IL zkompiluje do nativního nízkoúrovňového strojového kódu. Tato etapa se nazývá jako kompilace just-in-time (JIT) a probíhá stejně pro všechny aplikace.net (včetně například aplikací Windows). Oba kroky kompilačního procesu jsou znázorněny na obrázku 2.1. Obrázek 2.1: Kompilace webové stránky ASP.NET [1] Kompilace.NET je rozdělena do dvou kroků proto, aby se vývojářům mohlo nabídnout co největší pohodlí a co nejlepší přenositelnost. Předtím, než může kompilátor vytvořit nízkoúrovňový strojový kód, potřebuje znát typ operačního systému a hardwarovou platformu, kde bude aplikace běžet (například 32bitový nebo 64bitový operační systém). Když máme dvě kompilační etapy, můžeme vytvořit zkompilovanou assembly s kódem.net, kterou je možné distribuovat na více než jednu platformu. ASP.NET ulehčuje programátorům přechod od programování klasických aplikací pro Windows do prostředí webu. V podstatě odstraňuje dělící čáru mezi vývojem aplikací a 4

webovým vývojem, protože rozšiřuje nástroje a technologie, které se používaly výhradně vývojáři desktopových aplikací, do světa webového vývoje. Stránky jsou poskládány z objektů, ovládacích prvků (Controls), což se dá považovat za protějšek ovládacích prvků ve Windows. Při tvorbě webových stránek je tedy možné používat ovládací prvky jako tlačítko (Button), nápis (Label) a další. Těmto prvkům lze přiřazovat určité vlastnosti, zachytávat na nich události, atd. Tak, jako se ovládací prvky pro Windows samy kreslí do formulářů na obrazovku, webové ovládací prvky produkují HTML kód, tvořící část výsledné stránky poslané ke klientova do prohlížeče. ASP.NET podporuje zejména jazyky C# a Visual Basic.NET. Z těchto dvou jazyků si můžeme vybrat podle svých osobních preferencí, výsledek bude stejný pokud jde o funkčnost i výkonnost. Visual Basic.NET připomíná dobře známé skriptovací jazyky, je pro začátečníky lépe čitelnější, ovšem na úkor větší ukecanosti. C# je elegantní, moderní, sevřený, ale pro začátečníka pravděpodobně obtížněji čitelný. 2.4.1.NET framework.net ( dotnet podle anglického dot NET = tečka NET, NET pochází z network, síť) je zastřešující název pro soubor technologií v softwarových produktech, které tvoří celou platformu, dostupnou nejen pro Web, Windows, ale i Pocket PC. Common Language Infrastructure je standardizovaná specifikace jádra.net. Základní komponentou je Microsoft.NET Framework, prostředí potřebné pro běh aplikací a nabízející jak spouštěcí rozhraní, tak potřebné knihovny. Programátoři tak mohou realizovat své projekty v jakémkoliv jazyce podporujícím CLR, např. Visual Basic.NET, JScript.NET, C#, Managed C++, ale i mutace Perlu, Pythonu a další. Pro vývoj.net aplikací vydal Microsoft Visual Studio.NET..NET Framework se otočením kohoutku postará o řadu nízkoúrovňových a nezáživných povinností jakými jsou: správa paměti, vytváření a rušení objektů spouštění a zastavování vláken kódu bezpečnost kódu a kontrola oprávnění k prováděným operacím natahování potřebných knihoven a komponent do paměti apod. Obrázek 2.2. Struktura celého.net frameworku [13] 5

Stručně popíšeme jednotlivé komponenty, kromě CLR, které je popsáno níže obsáhleji. Base Class Library (BCL) je knihovna obsahující nejčastější pomocné funkce práci se soubory, třídění, diagnostiku, síťovou komunikaci apod. ADO.NET je knihovna pro práci s daty s možností jejich XML reprezentace. Dále jsou na obrázku dvě knihovny pro vývoj uživatelského rozhraní Windows Forms pro desktopové aplikace a ASP.NET pro webové uživatelské rozhraní. My se budeme zajímat pouze o druhou uvedenou možnost. 2.4.2 CLR Common Language Runtime CLR si lze ztotožnit s pojmem virtuálního stroje při použití programovacího jazyka Java. Podobně jako u programovacího jazyka Java, nejsou zdrojové kódy kompilovány přímo do nativního kódu, který lze provádět, ale do intermediárního jazyka. U programovacího jazyka Java je výsledkem soubor s příponou.class a tento je pak prováděn virtuálním strojem Javy. Podobně v prostředí.net jsou zdrojové soubory libovolného programovacího jazyka zkompilovány do intermediárního jazyka (nazvaného MSIL Microsoft Intermediate Language). V případě, že má být taková aplikace spuštěna, systém detekuje, že jde o aplikaci v MSIL a spustí Just-In-Time kompilátor. Ten vygeneruje skutečné instrukce cílové platformy. Vše je přehledně zobrazeno na obrázku 2.3. Obrázek 2.3: Common Language Runtime - kompilace a spuštění [2] Jedním z hlavních cílů při vývoji.net je podpora různých programovacích jazyků. Důležitým prvkem CLR je podpora společného typového systému (Common Type System CTS). Vedle CTS definovaném na systémové úrovni, CLR realizuje typovou bezpečnost a obecný objektově orientovaný model. Na základě používání CLR nám vznikají následují výhody: Automatická správa paměti a svoz odpadků (garbage collection) Typová bezpečnost Rozšiřitelná metadata Strukturované zpracování chyb Multithreading 6

2.5 Základní charakteristika jazyka C# Jazyk C# vyvinula firma Microsoft. Byl představen spolu s celým vývojovým prostředím.net. Jak název napovídá, vychází tento jazyk v mnohém z programovacího jazyka C/C++, ale v mnoha ohledech je daleko bližší programovacímu jazyku Java. Základní charakteristiky jazyka jsou: Jazyk C# je čistě objektově orientovaný. Obsahuje nativní podporu komponentového programování. Podobně jako Java obsahuje pouze jednoduchou dědičnost s možností násobné implementace rozhraní. Vedle členských dat a metod přidává vlastnosti a události. Správa paměti je automatická. O korektní uvolňování zdrojů aplikace se stará garbage collector. Podporuje zpracování chyb pomocí výjimek. Zajišťuje typovou bezpečnost a podporuje řízení verzí. Podporuje atributové programování. Zajišťuje zpětnou kompatibilitu se stávajícím kódem, jak na binární, tak na zdrojové úrovni. Většina uvedených vlastností vychází přímo s funkcionality vývojového rámce.net. Jazyk C# je také integrován do vývojového prostředí Visual Studio.NET. Překladače jazyka C# jsou case sensitive. Rozlišují tedy velká a malá písmena. Podobně jako v jiných programovacích jazycích, i v jazyce C# bylo zavedeno několik konvencí. Jména balíků, tříd, rozhraní a většiny dalších položek začínají velkým písmenem. Malým začínají privátní a chráněné (protected) atributy, lokální proměnné a parametry. Více informací o používaných konvencích najdeme v dokumentaci [11]. Na závěr jazyka C# malá ukázka zdrojového kódu: public partial class Default5 : System.Web.UI.Page { protected void Button1_Click(object sender, EventArgs e) { Button1.Visible = false; } } Tabulka 3.1: Zdrojový kód jazyka C# 2.6 Základní charakteristika jazyka VB.NET Visual Basic byl první jazyk, který se přizpůsobil operačnímu systému Windows a umožňoval jednoduše vytvářet složité aplikace. Vyvinul se z jazyka QBASIC, což byla mutace původního jazyka BASIC v operačním systému MS-DOS. Poslední verze jazyka Visual Basic je verze 6 z roku 1998. Dnes v ní stále ještě programuje mnoho lidí, ale postupně přechází na Visual Basic.NET, což je nová generace jazyka Visual Basic. 7

V současnosti je nejnovější verze Visual Basic.NET 2008 vydaná spolu s Microsoft.NET Framework 3.5 v listopadu 2007, označovaná někdy jako číslo 9. Visual Basic.NET je nová generace jazyka Visual Basic postavená na platformě.net Framework. Jedná se o moderní objektově orientovaný jazyk, neustále se vyvíjí a má velmi širokou základnu vývojářů po celém světě. Visual Basic.NET je plnohodnotný jazyk, mající stejné možnosti a stejnou výkonnost při psaní webových stránek nebo služeb, jako jeho největší rival C#. VB.NET je jednodušší na naučení, obsahuje totiž mnoho klíčových slov a jak začátečník, tak i programátor, který jej v životě neviděli, jsou schopni rozumět kódu, pokud umí anglicky. Díky podpoře.net se z Visual Basicu současně stal plnohodnotný nástroj pro vývoj profesionálních aplikací. A protože se od verze Windows XP + Service Pack 1.0 platforma.net spolu s jazyky C#, Script.NET a VB.NET stala nedílnou součástí Windows, můžeme VB.NET používat pro tvorbu jednoduchých aplikací namísto skriptovacích prostředí (jako je Windows Script, Python a další), protože je srovnatelně jednoduchý a současně mnohem výkonnější. Programy ve VB.NET na rozdíl od skriptů totiž běží jako aplikace kompilované do strojového kódu a to se srovnatelnou rychlostí jako aplikace v C++. Na rozdíl od většiny skriptovacích jazyků, které nemají podporu grafického prostředí Windows VB.NET disponuje plnohodnotnou podporou a knihovnami pro tvorbu grafických aplikací s formuláři, systémovými funkcemi, databázovým rozhraním a dokonce rozhraním pro multimédia a hry jako je DirectX nebo OpenGL. Přitom všem - na rozdíl od starších verzí Visual Basicu - nejsme při vytváření aplikací pro VB.NET omezeni na vývojové prostředí Microsoftu, jako je Microsoft Visual Studio. A konečně - jelikož prostředí.net bylo nedávno portováno i na některé další platformy (jako Linux, BSD nebo MacOS), budeme moci své programy (s případnými úpravami) spouštět dokonce i pod dalšími operačními systémy. Opět na závěr malá ukázka zdrojového kódu jazyka VB.NET: Partial Class Default4 Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Visible = False End Sub End Class Tabulka 3.2: Zdrojový kód jazyka VB.NET 8

3 Přístup k datům ADO.NET V mnoha typech aplikací a nejčastěji v podnikových aplikacích je potřebné přistupovat k datům uloženým v nějakém datovém zdroji, kterým často bývá relační databázový systém, ale mohou to být i jiné. Před nástupem internetu, jsme měli zejména desktopové aplikace poháněné daty. S rostoucím počtem lidí, využívající internet jako zdroj neomezených informací, se také zvyšuje počet webových aplikací (stránek), využívající rozmanité typy databází. Tyto aplikace se zejména soustřeďují na získávání, zobrazování a modifikaci dat. Za poslední léta se hodně změnil způsob, jakým aplikace používají data, která se neustále mění. Vývojáři se přesunuli od vývoje prostých klientských aplikací, pracujících s lokálními databázemi, na distribuované systémy. Distribuované systémy pracují s centralizovanými databázemi, které jsou umístěny na serverech určených k tomuto účelu. Kontinuálně s tím probíhá vývoj i u technologií určených k přístupu k datům. Jestliže si vezmeme technologie přístupu k datům od Microsoftu, zpozorujeme mix písmenkových zkratek ODBC, DAO, RDO, RDS, ADO a ADO.NET, jakožto nejnovější technologie přístupu k datům, která bude rozebrána podrobněji v dalších odstavcích této práce. 3.1 Základ ADO.NET Cestou jak přistupovat k datům v prostředí.net Framework je jeho součást, nebo jinými slovy komponenta, ADO.NET. Tato komponenta je následníkem technologie společnosti Microsoft s názvem ADO (ActiveX Data Objects). Oproti staršímu ADO, je již technologie ADO.NET mimo jiné připravena na použití v odpojených aplikacích (bude upřesněno níže) a také na nasazení ve vícevrstvých aplikacích, které jsou v dnešní době následníky aplikací s architekturou klient-server. Jednou s dalších důležitých vlastností komponenty ADO.NET je, že je možné standardizovaným způsobem přistupovat k datům v různých datových zdrojích, což lze do určité míry chápat jako odpověď na technologii JDBC (Java database connectivity) pro platformu Java. V ADO.NET však nenajdeme třeba možnost aktualizovat data (update) při otevřeném spojení klienta s databází za pomoci pesimistického zamykání záznamů, což je v klasickém ADO běžné. Lze říci, že ADO.NET je projektováno pro použití v síťovém (a ještě více webovém) prostředí. ADO.NET se skládá z řízených tříd, které umožňují aplikacím.net se připojovat ke zdrojům dat, vykonávat příkazy a spravovat data. ADO.NET má tu schopnost, že ve webových aplikacích píšeme víceméně stejný kód pro přístup k datům, jako je ten, který píšeme v desktopových aplikacích klient/server, a jaký píšeme v jednouživatelských aplikacích, které se připojují k lokální databázi. ADO.NET používá vícevrstevnou architekturu, pracující zejména s objekty Connection, Command či DataSet (objekty pro připojení, příkazy a sadu dat). Technologie ADO.NET je spojena s formátem XML, o čemž se během našeho poznávání této technologie několikrát přesvědčíme. Typy spojené s komponentou ADO.NET se nacházejí ve jmenných prostorech rozšiřující jmenný prostor System.Data (System.Data.Common, System.Data.SqlClient, System.Data.Odbc, ). Mimo tyto jmenné prostory do komponenty ADO.NET spadají i některé třídy ze jmenného prostoru System.Xml. V technologii ADO.NET máme možnost přístupu k datům v 9

různých datových zdrojích tak, že jsou předepsána určitá rozhraní (IDbConnection, IDbCommand, IDataReader, IDataAdapter, ), kde každé má svou specifickou úlohu. Použitím přístupu pomocí rozhraní je dosaženo toho, že je možné psát takový kód, který bude fungovat pro jakýkoli datový zdroj. To znamená, že pokud se změní datový zdroj naší aplikace (např. databáze ORACLE na databázi MS SQL) a naše aplikace je napsána s použitím přístupu přes zmíněná obecná rozhraní ADO.NET, chod aplikace zůstane stejný. Pokud chceme například v technologii ADO získat nějaký záznam z nějaké databáze Oracle, použijeme stejnou třídu Connection, kterou by jsme použili, kdyby jsme řešili stejný úkol s využitím SQL Serveru, ovšem v ADO.NET je to jinak zde se používá model poskytovatelů dat. 3.2 Poskytovatelé dat ADO.NET Poskytovatel dat (data provider) je sada tříd ADO.NET, umožňující nejenom přístup ke konkrétní databázi, ale také umožňují vykonávat příkazy SQL a získávat data. V podstatě je poskytovatel dat jakýmsi mostem mezi aplikací a zdroji dat. Do tříd, z nichž se skládá poskytovatel dat, patří: Connection (připojení). S jeho pomocí zřizujeme připojení ke zdroji dat. Command (příkaz). S jeho pomocí vykonáváme příkazy SQL a uložené procedury. DataReader (čtenář dat). Poskytuje rychlý přístup (jen ke čtení a jen směrem dolů) k datům získaným z nějakého dotazu. DataAdaptor (datový adaptér). Dělá dvě věci. Za prvé s ním můžeme naplnit sadu dat (objekt DataSet) informacemi extrahovanými ze zdroje dat. A za druhé s jeho pomocí můžeme promítnout změny do zdroje dat (na základě modifikací, které jsme udělali v sadě dat). ADO.NET obsahuje konkrétní poskytovatele dat, kteří byli navrženi pro různé druhy zdrojů dat. Každý poskytovatel dat specificky implementuje třídy Connection, Command, DataReader, DataAdapter, které jsou optimalizovány pro konkrétní RBDMS (Relational Database Management System - relační databázový systém). A tedy pokud budeme vytvářet připojení například k databázi SQL Serveru, použijeme třídu připojení, která se jmenuje SqlConnection. Model poskytovatelů ADO.NET je výhodný také díky možnosti rozšiřitelnosti (extensible). Z čehož vyplývá, že si mohou vývojáři vytvářet vlastní poskytovatele dat pro různorodé zdroje dat. Někteří výrobci dokonce prodávají vlastní poskytovatele pro.net. Základní knihovna tříd.net Frameworku obsahuje čtyři základní ADO.NET data providery: Poskytovatel SQL Serveru. Poskytuje optimalizovaný přístup k databázi SQL Serveru (verze 7.0 nebo novější). jmenný prostor System.Data.SqlClient Poskytovatel OLE DB. Poskytuje přístup k jakémukoliv zdroji dat, který má nějaký ovladač OLE DB. Patří sem také databáze SQL Serveru starších verzí než 7.0. jmenný prostor System.Data.OleDb Poskytovatel Oracle. Poskytuje optimalizovaný přístup k databázi Oracle (verze 8i nebo novější). jmenný prostor System.Data.Oracle 10

Poskytovatel ODBC. Poskytuje přístup k jakémukoliv zdroji dat, který má nějaký ovladač ODBC. jmenný prostor System.Data.Odbc Vrstvy modelu poskytovatelů ADO.NET jsou znázorněny na obrázku 3.1. Obrázek 3.1: Architektura ADO.NET [1] 3.3 Připojené a odpojené aplikace Pokud budeme tvořit aplikace komunikující s nějakým datovým zdrojem, můžeme použít dva scénáře pro přístup k datům a to scénář, kdy je aplikace takzvaně připojena k datovému zdroji (on-line) nebo naopak je od datového zdroje většinu času odpojena (offline). Každý z těchto scénářů má své výhody a nevýhody, a proto se hodí v různých typech situací. Komponenta ADO.NET je navržena tak, aby bylo možné ji použít v obou těchto scénářích. Následujících pár řádků bude podrobněji pojednávat o jednotlivých scénářích a o obecném pohledu na jejich implementaci v rámci ADO.NET. 3.3.1 Připojená aplikace Pokud se jedná o připojenou aplikaci, tak tato aplikace má vždy při manipulaci se souvisejícím datovým zdrojem aktivní připojení k tomuto zdroji. To je vhodné v případech, kdy potřebujeme přistupovat k datům, která jsou často měněna a v aplikaci potřebujeme vždy aktuální verzi těchto dat. Na druhou stranu to může představovat nevýhodu v podobě zvýšené komunikace mezi aplikační vrstvou a vrstvou datovou (to znamená mezi aplikací a například databází). 11

V případě ADO.NET jsou tyto scénáře řešeny pomocí kombinace jednotlivých implementací rozhraní IDbConnection, IDbCommand (v případě potřeby v souvislosti s implementací rozhraní IDbParameter) a IDataReader pro konkrétní datový zdroj. Obrázek 3.2: Schéma připojené aplikace 3.3.2 Odpojená aplikace Novějším, a v některých situacích také o mnoho vhodnějším, způsobem je použití odpojeného datového zdroje, díky čemuž se aplikace tohoto způsobu užívající, nazývají odpojenými aplikacemi. V tomto případě jsou data získána z datového zdroje do aplikace a po té je spojení s datovým zdrojem ukončeno. Od chvíle odpojení od datového zdroje, aplikace manipuluje s obrazem získaných dat, který je uložen v paměti. Po dokončení potřebných modifikací dat na úrovní aplikační logiky, je opět vytvořeno aktivní spojení k datovému zdroji, zjištěny rozdíly mezi daty z aplikace a daty v datovém zdroji a po té jsou tyto rozdíly promítnuty do příslušného datového zdroje. Toto řešení je vhodné pro aplikace, u kterých chceme redukovat komunikaci mezi jednotlivými vrstvami aplikace (aplikační a datovou). To se nejvíce hodí v situacích, kdy se aplikace a datový zdroj nacházejí na rozdílných počítačích a tím pádem se vyhýbáme komunikaci po síti. Samozřejmě je potřeba zvážit počet uživatelů, kteří k daným datům přistupují, aby nedocházelo k častým změnovým konfliktům. Technologie ADO.NET má pro toto řešení výbornou podporu a to v podobě třídy DataSet, která představuje onen kýžený obraz získaných dat v paměti. Instance této třídy je naplněna daty pomocí konkrétní implementace rozhraní IDataAdapter, který využívá implementace rozhraní IDbConnection a IDbCommand. 12

Obrázek 3.3: Schéma odpojené aplikace 13

4 ASP.NET a konkurence V oblasti tvorby webových stránek, lépe řečeno programování webových stránek, je v dnešní době spousta technologií, soupeřících o pomyslný největší kus koláče, který může reprezentovat buď celkový počet vytvořených webových stránek v dané technologii nebo počet vývojářů pracující s danou technologií. Za nejrozšířenější technologie pro programování webových stránek můžeme v dnešní době označit ASP, ASP.NET, JSP (Java Server Pages) a PHP (Personal Home Pages resp. Hypertext Preprocesor). Ani jedna z nich se nedá přímo srovnávat s druhou, protože se ve většině případů velmi liší. Pro alespoň obecnou představu si zkusíme jednotlivé technologie v dalších odstavcích přece jenom porovnat. 4.1 Technologie možné jako konkurence Technologie ASP, jak již bylo dříve uvedeno, je překonána a nahrazena ASP.NET, proto se i v praxi od této technologie upouští a nové webové stránky se již prakticky nevytvářejí a spíše se jen udržují již hotové webové stránky. Z toho důvodu nepředstavuje ASP konkurenci ASP.NET a také není mnoho důvodů, proč by se měla tato technologie srovnávat s ostatními, jestliže bude za pár let jen minulostí. Daleko zajímavější je PHP skriptovací jazyk, vytvářený jako open-source projekt. PHP spatřuje světlo světa více než 10 let, má mnoho verzí za sebou a možná i několik před sebou. Srovnání ASP.NET a PHP může vyznít podobně jako by jsme chtěli srovnávat v našich poměrech Škodu Favorit se Superbem. Favorit dnes upravují a zlepšují jen nadšenci, sice je stále oblíben a hojně používán i díky tomu, že si každý náhradní díl stále můžete sehnat a ve většině případů i samy opravit. Naproti tomu za vývojem nového Superbu stojí koncern Volkswagen. Stávajících majitelů Superbu jistě nebude zatím tolik, kolik majitelů Favoritu, ale tyto počty nebudou dlouho pravda a majitelů Superbu bude rozhodně časem přibývat, čím dál více oproti Favoritu. Počet Favoritů by mohl začít růst snad jen v případě vývoje nového prototypu. Tolik co do automobilové řeči. Nehledě na mnohé rozdíly se pokusíme ASP.NET a PHP porovnat dále v textu, poněvadž je dnes PHP hojně používáno a rozhodně si zaslouží pozornost. Poslední na řadě, ale rozhodně ne méně významná, je technologie od dalšího světového hráče na poli software Sun Microsystems a jejich JSP na bázi programovacího jazyka JAVA. S uváděných technologií je JSP nejvíce podobná ASP.NET, jelikož se prolíná plně objektové programování v plnohodnotném programovacím jazyku s html tagy jako u ASP.NET. Opět i zde je srovnání obtížné. Obě společnosti investují nemalé prostředky do vývoje, ovšem každá společnost má jiné pracovní pomůcky a podle toho vypadá konečný produkt. 14

4.2 JSP (JAVA SERVER PAGES) Roku 1997 byly firmou Sun Microsystems představeny malé programy, generující webové stránky na straně serveru - servlety. O rok později Sun představuje komplexní platformu J2EE (Java 2 Enterprise Edition), na jejímž základě jsou postaveny i produkty jiných softwarových společností. Roku 1999 se Sun nechal inspirovat technologií ASP a uvádí specifikaci JSP, která je postavena na platformě J2EE. Java Server Pages je v podstatě Java běžící na serveru, liší se tak od appletů, které jsou vykonávány u klienta. JSP je skriptovací jazyk a má oproti servletům, tedy věci výkonově mohutné, tu výhodu, že je pro její programátory jednodušší. Není totiž nezbytné programovat celý servlet, ale pouze dodat do HTML kódu několik značek a efekt je nakonec stejný. Při prvním volání JSP stránky od její změny, je stránka nejprve konvertována do podoby zdrojového kódu servletu (okolní "statický" HTML text je převeden do příkazů print v metodě service()), pak zkompilována do bytového kódu (.class) a posléze pomocí rozhraní JVM (Java Virtual Machine) spuštěna. Výsledek je pak odeslán webovému serveru a následně je výsledná HTML (popř. XML aj.) stránka odeslána ke klientovi. Při dalším požadavku klienta již není stránka převáděna do bytového kódu. Odpadá tedy konverze na servlet a bytový kód. Stránka je tedy podruhé mnohem rychleji nahrána. Celá aplikace je tedy hodně výkonná, protože jsou skripty vyvolávány v již přeloženém stavu. Fakt, že JSP je v podstatě budoucí servlet, má bezprostřední vliv na její programování, zejména na způsob získávání parametrů od klienta a generování výstupu. Uvnitř kódu každé JSP má programátor přístup k několika předdefinovaným proměnným, tzv. implicitním objektům. Mezi nejdůležitější z nich patří request (instance třídy HttpServletRequest; pomocí této proměnné lze především číst parametry požadavku), response (instance HttpServletResponse), a out (výstupní proud, kterým posíláme data klientovi). Při vytváření JSP se v hojné míře používají tzv. JavaBeans. Java Bean je opakovaně využitelná programová komponenta. Jde v podstatě o třídu, která má určité vlastnosti (properties). Každé vlastnosti odpovídá dvojice metod s ustálenými názvy. Hodnoty těchto vlastností mají vliv na čtení nebo nastavení (např. pracují s nastavením nějaké proměnné). Při vhodném použití JavaBeans bude kód uvnitř JSP kratší, přehlednější a bude se snáze udržovat. JavaBeans umožňují oddělit obsah (co chceme vložit do vygenerovaného dokumentu) od konkrétní implementace (např. způsob získávání dat z databáze), která se může později změnit bez nutnosti zásahu do JSP. Technologie J2EE je nezávislá na hardwarové platformě a operačním systému. Vytvořené řešení lze bez újmy na zdraví přenést na jinou platformu, na jiný webový server. Webový server samozřejmě musí mít nainstalovanou podporu JSP. Jde o komplexní a nákladné řešení, hodící se pro vývoj velkých internetových a intranetových aplikací. 15

Obrázek 4.1: JSP princip činnosti 1. Uživatel požádá o webovou stránku, která byla vytvořená jako JSP. Klient vytvoří požadavek (request) a směřuje ji přes síť na server. 2. Požadavek je nasměrovaný na příslušný web server. 3. Web server zjistí, že požadovaný soubor je speciální, protože má koncovku "jsp". Proto přesměruje JSP soubor do JSP Servlet stroje. 4. V případě, že tento soubor byl volaný poprvé, JSP stroj ho překontroluje. V opačném případě pokračuje bodem 7. 5. V dalším kroku je vygenerovaný speciální servlet, vytvořený na základě souboru JSP. Všechno statické HTML je uložené v out.println() příkazech. 6. Zdrojový kód servletu je zkompilovaný a je vytvořený ".class" soubor. 7. Je vytvořená instance servletu a zavolají se metody init() a service(). 8. Výstupem ze servletu je HTML, které je poslané přes síť. 9. Uživateli se zobrazí výsledky. Na tomto jednoduchém příkladu (Tabulka 4.1) je vidět propojenost klasického HTML a Java kódu, uzavřeného mezi tagy <% a %>. 16

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <html> <body> <p> <f:view> <h:form> <i>name:</i><br/> <h:inputtext id="name" value="#{loginbean.name}" required="true" /> <i>password:</i><br/> <h:inputsecret value="#{loginbean.password}" /> <h:message for="name" /> <h:commandbutton action="#{loginbean.login}" value="login" /> <h:commandbutton value="reset" type="reset" /> </h:form> </f:view> </p> </body> </html> Tabulka 4.1: Zdrojový kód JSP 4.2.1 Srovnání JSP a ASP.NET Po stručném úvodu do JSP se pokusíme srovnat základní stavební kameny JSP a ASP.NET technologií. Jakékoliv srovnání mezi dvěma vývojovými platformami bude samozřejmě ovlivněno osobními preferencemi daného pisatele. Po shlédnutí několika vývojářských diskusních fór to vypadá tak, že je zde tendence pro ty, kteří používali obě platformy, se přiklonit směrem k Microsoft řešení v podobě ASP.NET. Mohli by jsme se ale mylně domnívat, že je to důsledek rozsáhlé marketingové kampaně ze strany Microsoftu, ovšem to se zdá být liché. Faktem zůstává umožnění lepší a rychlejší práce pro vývojáře ASP.NET díky: Znovu použitelnosti Webové ovládací prvky umožňují postavit znovu použitelné kousky uživatelského kódu, které mohou být jednoduše vyzvednuty a opět položeny na ASP.NET stránku. Jednoduchosti vývoje Visual Studio.NET bylo vyvinuto pro použití s ASP.NET a následkem toho vykonává dvojí úlohu: editoru kódu a také vyobrazení stránky. Oproti tomu NetBeans byly prvotně určeny pro vývoj okenních aplikací pod Javou. Výkonu Takové inovace jako částečné cachování stránek a způsob kompilace stránek, poskytují ASP.NET lepší výkon ve srovnání s JSP. Rozšiřitelnosti Výkonnostní výhody se také projeví na rozšiřitelnosti a společně s možností ukládat data relace do centrální databáze, dělá vývoj aplikací pro webové farmy mnohem jednodušší. Architektuře Model událostí ASP.NET na straně serveru, jenž odděluje kód od obsahu, dovolujícím WYSIWYG ( What you see is what you get, Co vidíš, to dostaneš. ) editaci stránky, je integrován s ostatními komponentami.net platformy. Takové, jako je například Visual 17

Studio.NET, poskytují silné výhody, ve srovnání s tím, co poskytuje Java JSP stránkám. Významný rozdíl mezi nimi je i ten, že JSP nazývá Java programem ten program, který je realizovaný Webovým Serverem, zatímco ASP.NET obsahuje skript, který je interpretován skriptovým interpreterem (VBScript) před tím, než je stránka odeslána k uživateli. Již z popisu JSP jde zpozorovat velká rozdílnost mezi těmito dvěmi technologiemi. Na jejich základě je i vidět odlišnost co do výkonu, jednoduchosti, přehlednosti a přenositelnosti. Každá z těchto vlastností se více či méně, to například v přenositelnosti, kde ASP.NET dohání co se dá, podepisuje na převaze ASP.NET. Srovnání můžeme také zaměřit na vývojové prostředí dostupné od jednotlivých společností. Sun a jeho NetBeans byl prvotně tvořen pouze pro podporu vývoje desktopových aplikací v jazyce Java, kdežto Visual Studio.NET byl od počátku zaměřen, jak na vývoj desktopových, tak webových aplikací a to v různých programových jazycích. Dle mého subjektivního pozorování a zkoušení se mi jeví NetBeans pro tvorbu webových stránek až příliš složitý, hlavně díky nepřehledným nabídkám, kde je spousta možností na výběr, kdežto vy jako začátečník požadujete jen tu jednu. Pro zkušené vývojové pracovníky by to samozřejmě neměl být problém a spíše ocení možnost výběru. Začátečníkům ovšem doporučuji raději použít nějaký HTML editor s podporou JSP. Vyhodnocení srovnání ASP.NET a JSP by dle mého názoru dopadlo kladně pro ASP.NET, avšak to neznamená, že se JSP pro tvorbu webových aplikací nehodí. Pro JSP hovoří pozitivně zejména znalost programovacího jazyka Java mezi vývojáři a vhodné využití pro rozsáhlé webové aplikace. Naproti tomu jednoduché osobní webové stránky se budou vytvářet daleko snadněji v PHP. Sun Microsystems se rozhodně nebude chtít vzdát své technologie pro tvorbu webových aplikací JSP a bude se snažit vyvíjet další nové technologie a přizpůsobovat stávající dle současných trendů, aby nezůstal ani krok za svým největším konkurentem v oblasti webových aplikací - Microsoftem. Napovídá tomu i fakt neustále rostoucí poptávky po webových službách určených nejen pro osobní počítače, ale zejména pro mobilní zařízení, kde může Java s JSP technologií snadno uspět, za předpokladu neustálého zlepšování a zdokonalování svých technologií. Jestliže si společnost Sun Microsystems uvědomuje současné trendy v oblasti webových služeb, o čemž nepochybuji, může být vyrovnaným konkurentem Microsoftu a dalších i do budoucna. 4.3 PHP ( Hypertext Preprocesor ) PHP (původně označováno jako Personal Home Page) je skriptovací programovací jazyk, určený především pro programování dynamických internetových stránek. Nejčastěji se začleňuje přímo do struktury jazyka HTML, XHTML či WML, což je velmi výhodné pro tvorbu webových aplikací. PHP lze ovšem také použít i k tvorbě konzolových a desktopových aplikací. Jeho počátky spadají do roku 1994. Tehdy se pan Rasmus Lerdorf rozhodl vytvořit jednoduchý systém pro počítání přístupu ke svým stránkám, byl napsán v PERLu. Za nějakou dobu byl systém přepsán do jazyka C, protože perlovský kód dost zatěžoval 18

server. Sada těchto skriptů byla ještě později téhož roku vydána pod názvem "Personal Home Page Tools", zkráceně PHP. Ještě později publikováno pod názvem "Personal Home Page Construction Kit". U toho však dlouho nezůstalo. V polovině roku 1995 se systém PHP spojil s jiným programem stejného autora, a to sice s nástrojem "Form Interpreter" neboli zkráceně FI. Tak vzniklo PHP/FI 2.0, systém, který si postupně získal celosvětovou proslulost a byl velmi rozšířen. Zeev Suraski a Andi Gutmans v roce 1997 přepsali parser a zformovali tak základ PHP3. Koncem roku 1998 byla již k dispozici verze PHP 3.0, která byla mnohem rychlejší (a vybavenější) než "dvojka" a byla k dispozici rovněž pod operačními systémy Windows. Počet webů používající PHP se zvyšoval, až dosáhl cca 150 000. Verze PHP 4 přidala do jazyka mnoho nových funkcí a rovněž přinesla přepracované a tudíž podstatně rychlejší jádro Zend. Poslední uveřejněná verze PHP 5 v roce 2004 přinesla jádro Zend II, kompletně přepsaná podpora XML, nové objektové rozhraní pro práci s databází MySQL a mnoho dalšího. S verzí PHP 5 se výrazně zlepšil přístup k objektově orientovanému programování podobný Javě. Podle údajů z dubna 2007 běží PHP na více než 25 000 000 doménách a je to bezkonkurenčně nejčastěji používaný modul webového serveru Apache. Jazyk PHP je interpretovaný, což znamená, že až do okamžiku svého použití (spuštění) je uchováváno ve zdrojovém tvaru. Interpret jazyka tento kód vezme a překládá jej do strojového kódu pro počítač, na kterém PHP běží. To je samozřejmě pomalejší než v případě kompilovaného kódu, který je k dispozici již přímo ve spustitelném tvaru. Cílový počítač soubor vezme, uvedeným instrukcím rozumí a může je ihned provádět. PHP skripty jsou prováděny na straně serveru, k uživateli je přenášen až výsledek jejich činnosti. Syntaxe jazyka kombinuje hned několik programovacích jazyků (Perl, C, Pascal a Java). PHP je nezávislý na platformě. Skripty fungují bez úprav na mnoha různých operačních systémech. Obsahuje rozsáhlé knihovny funkcí pro zpracování textu, grafiky, práci se soubory, přístup k většině databázových serverů (mj. MySQL, ODBC, Oracle, PostgreSQL, MSSQL) a podporu celé řady internetových protokolů (HTTP, SMTP, SNMP, FTP, IMAP, POP3, LDAP, ). 19

Obrázek 4.2: Princip činnosti PHP [12] Pokusíme se popsat typické vlastnosti skriptovacího jazyka PHP. Jazyk PHP je dynamicky typový, tzn. že datový typ proměnné se určí v okamžiku přiřazení hodnoty. Díky tomu má PHP dva typy porovnání, '= =' stejný jako v C a '= = =', který platí jen když jsou oba dva výrazy stejného typu. Pole v PHP jsou heterogenní, mohou tedy obsahovat jakékoli údaje, stejně tak jako jejich indexy a řetězce lze uzavírat jak do uvozovek (obsah je parsován), tak do apostrofů (obsah není parsován). Proč je PHP tak oblíbené? K tomu vede celá řada věcí: PHP je relativně jednoduché na pochopení a použití. PHP má syntaxi velmi podobnou jazyku C a je tedy většině vývojářů dost blízký. PHP podporuje širokou řadu souvisejících technologií, formátů a standardů. Kombinuje vlastnosti více programovacích jazyků a nechává tak vývojáři částečnou svobodu v syntaxi. Je to otevřený projekt s rozsáhlou podporou komunity. Dají se najít kvanta již hotového kódu k okamžitému použití nebo funkční PHP aplikace. Podstatná část z hotového kódu je šířena pod nějakou svobodnou licencí a dá se použít ve vlastních projektech. PHP si dobře rozumí s webovým serverem Apache. PHP snadno komunikuje s databázemi jako je MySQL, PostgreSQL a řadou dalších. PHP je multiplatformní a lze jej provozovat s většinou webových serverů a na většině dnes existujících operačních systémech. 20

PHP podporuje mnoho existujících poskytovatelů webhostingových služeb V kombinaci s databázovým serverem (především s MySQL nebo PostgreSQL) a webovým serverem Apache je často využíván k tvorbě webových aplikací. Díky velmi častému nasazení na serverech se vžila zkratka LAMP tedy spojení Linux, Apache, MySQL a PHP nebo Perl. PHP má i své nevýhody, a pokud budeme chtít napsat dynamický web, s některými věcmi by jsme se měli při použití PHP seznámit: PHP je interpretovaný a ne kompilovaný jazyk, což má za následek zpomalení výkonu. Kdokoli má přímý přístup k serveru, může nahlédnout do PHP skriptů. Podpora objektového programování není v PHP na moc dobré úrovni. Poněvadž je PHP aktivně vyvíjen, v budoucích verzích jazyka se mohou některé funkce změnit nebo se mohou chovat jinak než dosud a to má za následek nekompatibilitu s předchozími verzemi. V PHP se dá napsat téměř všechno, co nějak souvisí s dynamickým webem anebo s databázemi. Mezi nejčastější aplikace psané v PHP patří například: internetové obchody podnikové informační systémy (ať už intranetové nebo internetové) diskusní fóra redakční systémy firemní prezentace dynamické osobní stránky webový poštovní či databázový klienti vyhledávače a katalogy drobnosti typu počítadla, ankety a mnoho dalších Ukázka použití kódu PHP ve webové stránce: <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <title>php ukázka</title> </head> <body bgcolor="#eeeeee" text="#050004"> <center><font face="arial CE, Arial" size="10"> <?php $martin = 194; // Martinova výška $honza = 174; // Honzova výška $petr = 165; // Petrova výška $prumerna_vyska = ($martin + $honza + $petr)/3; echo "Průměrná výška je $prumerna_vyska cm.";?> </font></center> </body> </html> Tabulka 4.2: Zdrojový kód PHP 21

4.3.1 Srovnání PHP a ASP.NET V těchto pár odstavcích se pokusím přehledně a jednoduše porovnat některé z části technologií ASP.NET a PHP. 4.3.1.1 Vnitřní struktura Srovnání obou technologií začneme jejich technologickým pozadím, tedy tím, o co se mohou opřít. Vše podstatné už vlastně bylo napsáno v představení technologií, proto jen krátké shrnutí: PHP je subtilní samostatná technologie, která pro vývojáře poskytuje poměrně dobrou infrastrukturu, sama se ale o nic většího neopírá. Naproti tomu je ASP.NET součástí rozsáhlého.net Frameworku a samostatně ani existovat nemůže. Oba přístupy mají něco do sebe. Speciálně vytvořené PHP je přímočarou platformou, která bez okolků poskytuje účelové nástroje pro vývoj webových aplikací. Také proto bývá PHP označováno jako jedno-duché. ASP.NET je naopak součástí víceúčelové platformy. Obrázek 2.2 ukazuje, že ASP.NET využívá úplně stejné knihovny funkcí (Base Class Library) jako Windows Forms, společná je také vrstva pro přístup k datům (v obrázku označena jako ADO.NET a XML ). Tato integrace na jednu stranu zaručuje konzistenci s ostatními oblastmi vývoje, na druhou stranu je ASP.NET tak trochu spoutáno pravidly, které platí pro celý framework. Rozsáhlost.NET Frameworku je také nepříjemnou vlastností pro začátečníky ASP.NET působí při prvním setkání složitým dojmem (v kontrastu s jednoduchostí PHP). Ačkoliv tedy každý přístup má svá pro a proti, výhodou PHP je, že se ho lze kvůli jeho jednoduchosti rychle naučit. Ovšem člověk znalí alespoň základům objektově orientovaného programování nebude mít problém ani s ASP.NET. 4.3.1.2 Podporované jazyky PHP není jen platformou pro vývoj webových aplikací, ale i skriptovacím jazykem této platformy, a to jazykem jediným. Existuje sice možnost integrace s Javou [9] nebo modul pro Python [10], nicméně nelze říct, že by PHP obecně podporovalo více jazyků. Naproti tomu celý.net Framework je jazykově neutrální lze používat libovolný jazyk, který vyhovuje určitým pravidlům (Common Language Specification). ASP.NET 2 obsahuje přímou podporu pro Visual Basic.NET a C#, jinak je možno využívat z nabídky více než 25 jazyků. Jazyková neutralita je nádherná vlastnost, která má mnoho příjemných důsledků. První je samozřejmě možnost volby. Vývojář ve Visual Basicu se nemusí učit nějaký nový jazyk, který je už od pohledu zcela odlišný, vývojář v Javě má okamžitě k dispozici J#, což je jazyk se shodnou syntaxí, vývojář v C++ může svůj oblíbený jazyk okamžitě začít používat atd.. Tím, že se zdrojový kód kompiluje do MSIL (Microsoft Intermediate Language), je ale jazyková neutralita dotažena k dokonalosti. Není nejmenší problém napsat některé třídy třeba v COBOLu, jiné v Pascalu a přitom využívat funkčnosti tříd napsaných v C#. Co se týče podpory jazyků, je ASP.NET nepochybně lepší. 22