ˇ ´ vysoke ´ uc ˇen´ı technicke ´ v Praze Cesk e ´ Fakulta elektrotechnicka
´ PRACE ´ DIPLOMOVA Rozhran´ı n´ astroje pro tvorbu rozvrhu
Praha, 2009
Autor: Ondˇ rej Kunc
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady (literaturu, projekty, SW atd.) uveden´e v pˇriloˇzen´em seznamu.
V Praze dne podpis
i
Podˇ ekov´ an´ı Dˇekuji sv´e rodinˇe za podporu vynakl´adanou pa celou dobu m´eho studia. Pˇredevˇs´ım vˇsak, dˇekuji vedouc´ımu pr´ace panu Ing. Liboru Waszniowskimu, Ph.D. za odborn´e veden´ı diplomov´e pr´ace, vstˇr´ıcnost pˇri zodpov´ıd´an´ı dotaz˚ u.
ii
Abstrakt ´ Ukolem pr´ace je na pilotn´ım projektu ovˇeˇrit pouˇzitelnost technologie Silverlight pro tvorbu grafick´eho uˇzivatelsk´eho rozhran´ı(GUI) optimalizaˇcniho n´astroje. Jako pilotn´ı apliakace bylo zvoleno GUI n´astroje pro tvorbu rozvrhu fakulty, kter´e v sobˇe kombinuje poˇzadavky na komfortni ovladani bl´ızke desktopov´e aplikaci a z´aroveˇ n potˇrebu sd´ılen´ı dat, kterou naopak nabiz´ı webov´a aplikace. ´ Uvodn´ ı kapitoly popisuj´ı z´akladn´ı pojmy .NETu vyuˇz´ıvan´e v Silverlight technologii, stejnˇe jako s instalaci a pouˇz´ıv´an´ı Silverlightu. D´ale je popisov´an vyvinut´ y Silverlight program, urˇcen´ y pro tvorbu rozvrhu ˇskoly. V z´avˇeru jsou zhodnoceny osobn´ı zkuˇsenosti a postˇrehy nabyt´e pˇri tvorbˇe programu.
iii
Abstract The aim of this thesis is to get familiar with new Microsoft technology called Silverlight and create an optimalization tool with it. As a starting application was selected GUI for declaring school’s timetable, which combines requires for user friendly interface similar to desktop application and at the same time need of sharing data, which offers web application. Opening chapters are describing basic .NET conceptions being used in Silverlight technology as well as installation and using Silverlight. Further is described program developed in Silverlight. Personal experience found out during thesis construction are estimated at the end.
iv
Obsah Seznam obr´ azk˚ u
ix
Seznam tabulek
xi
´ 1 Uvod
1
2 RIA
2
2.1
Prostˇredky RIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2.1.1
Technologie bez potˇreby plug-inu . . . . . . . . . . . . . . . . . .
3
2.1.1.1
AJAX(Asynchronous JavaScript and XML) . . . . . . .
3
Technologie s potˇrebou plug-inu . . . . . . . . . . . . . . . . . . .
4
2.1.2.1
Silverlight . . . . . . . . . . . . . . . . . . . . . . . . . .
4
2.1.2.2
Adobe Flex . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.1.2.3
Java, JavaFX . . . . . . . . . . . . . . . . . . . . . . . .
6
2.1.2.4
a ti druz´ı... . . . . . . . . . . . . . . . . . . . . . . . . .
6
Silverlight vs. Adobe Flash . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.1.2
2.2
3 Silverlight
8
3.1
Historie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.2
Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3.3
Architektura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
3.3.1
CLR(Common Language Runtime) . . . . . . . . . . . . . . . . .
13
WPF(Windows Presentation Foundation) . . . . . . . . . . . . . . . . . .
15
3.4.1
XAML(Extensible Application Markup Language) . . . . . . . . .
16
WCF(Windows Communication Foundation) . . . . . . . . . . . . . . . .
17
3.5.1
Web Services(Webov´e sluˇzby) . . . . . . . . . . . . . . . . . . . .
18
3.6
LINQ(Language Integrated Query) . . . . . . . . . . . . . . . . . . . . .
21
3.7
Struktura Silverlightu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.4 3.5
vi
4 Vytvoˇ ren´ı RIA aplikace
25
4.1
Tvorba Silverlight aplikace . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.2
Nastaven´ı komunikace s datab´az´ı . . . . . . . . . . . . . . . . . . . . . .
27
4.2.1
Web.config . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.2.2
Pˇripojen´ı webov´e sluˇzby . . . . . . . . . . . . . . . . . . . . . . .
30
4.2.3
Cross-Domain access policy . . . . . . . . . . . . . . . . . . . . .
33
4.3
Pˇrid´an´ı Silverlight aplikace na ASP.NET str´anku . . . . . . . . . . . . .
36
4.4
Vol´an´ı sluˇzby v k´odu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.5
Pr´ace s daty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
5 Popis programu pro tvorbu rozvrhu 5.1 5.2
5.3
39
Struˇcn´ y popis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
5.1.1
Datab´aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Tvorba GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
5.2.1
Administrace rol´ı . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.2.2
Navigace v Silverlightu . . . . . . . . . . . . . . . . . . . . . . . .
46
Vlastn´ı aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.3.1
Editace dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.3.2
Rozvrh m´ıstnosti . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
5.3.3
Typ pˇredmˇetu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.3.4
Rozvrh uˇcitele . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.3.5
Tvorba obor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5.3.6
Nastaven´ı pˇr´ıstupu . . . . . . . . . . . . . . . . . . . . . . . . . .
55
6 Postˇ rehy a probl´ emy zaznamenan´ e pˇ ri tvorbˇ e programu
56
6.1
Pot´ıˇze pˇri pˇr´ıstupu k webov´e sluˇzbˇe . . . . . . . . . . . . . . . . . . . . .
56
6.2
Pˇripojov´an´ı reference na sluˇzbu . . . . . . . . . . . . . . . . . . . . . . .
57
6.3
Probl´emy s ASP.NET configur´atorem . . . . . . . . . . . . . . . . . . . .
59
6.4
Odchyt´av´an´ı ud´alost´ı myˇsi . . . . . . . . . . . . . . . . . . . . . . . . . .
59
6.5
Silverlight configuration . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
7 Z´ avˇ er
61
Literatura
63
A Seznam pouˇ zit´ eho softwaru
I
vii
B Obsah pˇ riloˇ zen´ eho CD
II
viii
Seznam obr´ azk˚ u 2.1
Porovn´an´ı AJAXu a klasick´eho internetov´eho modelu (pˇrevzato z [3]) . .
4
3.1
Banner nepˇr´ım´e instalace Silverlightu . . . . . . . . . . . . . . . . . . . .
9
3.2
Silverlight platforma(pˇrevzato z [7]) . . . . . . . . . . . . . . . . . . . . .
11
3.3
Pˇreklad .NET k´odu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.4
Oblasti ˇcinnosti CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
3.5
Uk´azka WPF desktopov´e aplikace . . . . . . . . . . . . . . . . . . . . . .
16
3.6
Uk´azka XAML k´odu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.7
Sch´ema komunikace WebService . . . . . . . . . . . . . . . . . . . . . . .
20
3.8
Obsah souboru XAP odpov´ıdaj´ıc´ı aplikaci s n´azvem DiplomaThesis . . .
23
4.1
V´ ybˇer ˇsablony pro tvorbu Silverlight aplikace . . . . . . . . . . . . . . . .
26
4.2
Dialogov´e okno pro v´ ybˇer druhu Silverlight aplikace . . . . . . . . . . . .
27
4.3
Tvorba tˇr´ıdy Linq to Sql . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.4
Pˇrid´av´an´ı prvk˚ u do Linq tˇr´ıdy . . . . . . . . . . . . . . . . . . . . . . . .
28
4.5
Soubor s k´odem sluˇzby . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.6
Dialogov´e okno pˇripojen´ı reference na sluˇzbu . . . . . . . . . . . . . . . .
32
4.7
Obsah ServiceReferences.ClientConfig souboru . . . . . . . . . . . . . . .
33
4.8
Pr˚ ubˇeh z´ısk´av´an´ı pˇr´ıstupov´ ych informac´ı (pˇrevzato z [13]) . . . . . . . .
35
4.9
Solution explorer Silverlight aplikace . . . . . . . . . . . . . . . . . . . .
36
4.10 Vol´an´ı sluˇzby v k´odu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
5.1
Blokov´e sch´ema aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
5.2
ER model datab´aze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5.3
Vzhled GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
42
5.4
ASP.NET n´astroj pro spr´avu webu . . . . . . . . . . . . . . . . . . . . .
43
5.5
Pouˇzit´ı IsolatedStorage . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.6
Uvodn´ı str´anka aplikace pro tvorbu rozvrhu . . . . . . . . . . . . . . . .
48
ix
5.7
Hlavn´ı menu aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.8
Funkce odkazu View . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
5.9
Pˇrid´av´an´ı nov´ ych z´aznam˚ u. . . . . . . . . . . . . . . . . . . . . . . . . .
49
5.10 Pˇriˇrazen´ı pˇredmˇet˚ u m´ıstnostem . . . . . . . . . . . . . . . . . . . . . . .
50
5.11 Urˇcen´ı druhu pˇredmˇetu . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.12 Vytvoˇren´ı cviˇcen´ı . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
5.13 Tvorba rozvrhu uˇcitele . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.14 Tvorba obor˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5.15 N´astroj pro administraci pˇr´ıstupu k funkc´ım aplikace . . . . . . . . . . .
55
6.1
Chyba pˇri pˇr´ısrupu k webov´e sluˇzbˇe . . . . . . . . . . . . . . . . . . . . .
57
6.2
Chyba pˇri pˇripojov´an´ı reference na webovou sluˇzbu . . . . . . . . . . . .
57
6.3
Chyba pˇri pˇripojov´an´ı sluˇzby . . . . . . . . . . . . . . . . . . . . . . . .
58
6.4
Chyba pˇri pˇripojov´an´ı reference na webovou sluˇzbu . . . . . . . . . . . .
58
6.5
ASP.NET Configuration chyba . . . . . . . . . . . . . . . . . . . . . . . .
59
6.6
N´astroj pro spr´avu SL aplikace . . . . . . . . . . . . . . . . . . . . . . .
60
x
Seznam tabulek 3.1
Popis hlavn´ıch ˇca´st´ı Silverlight platformy . . . . . . . . . . . . . . . . . .
11
3.2
Core presentation features Silverlight platformy . . . . . . . . . . . . . .
12
3.3
.NET Framework pro Silverlight
. . . . . . . . . . . . . . . . . . . . . .
12
3.4
Pˇridan´e Silverlight Programming Features . . . . . . . . . . . . . . . . .
13
xi
Kapitola 1 ´ Uvod Web je nejpopul´arnˇejˇs´ı prostˇred´ı pro sd´ılen´ y software. Jsou vˇsak vˇeci, kter´e webov´e aplikace dˇelat nedok´aˇz´ı, nebo jenom omezenˇe. Ani pˇres snahu vybavit sv´e, napˇr´ıklad ASP.NET webov´e str´anky nejnovˇejˇs´ımi vˇecmi JavaScriptu, nebudeme schopni dos´ahnout funkcionality desktopov´ ych aplikac´ı. I pˇresto, ˇze JavaScript poskytuje moˇznost odpov´ıdat na nˇekter´e klientsk´e ud´alosti, budov´an´ı sloˇzit´ ych rozhran´ı, aspoˇ n tak uˇzivatelsky vstˇr´ıcn´ ych jako stadnartn´ı aplikace desktopov´e, je nemoˇzn´e. Hranice webu jsou neust´ale pokoˇrov´any, a tak uˇz nyn´ı nen´ı probl´em si na str´ank´ach zahr´at, ne zrovna trivi´aln´ı, plnˇe grafickou hru. ˇ ˇ ık´a se jim RIA, internetov´e Reknete si to asi nen´ı obyˇcejn´e HTML, CSS a JavaScript. R´ aplikace funguj´ıc´ı za pomoci plug-inu v prohl´ıˇzeˇci. Tato pr´ace si d´av´a za c´ıl sezn´amen´ı s novou technologi´ı Microsoftu na tvorbu RIA aplikac´ı (kap.2), naz´ yvanou Silverlight(kap.3). Silverlight umoˇzn ˇuje vytv´aˇret aplikace pˇr´ıstupn´e na internetu s funkˇcnost´ı srovnatelnou s aplikacemi desktopov´ ymi. Jelikoˇz je Silverlight pomˇernˇe nov´a technologie bude nejdˇr´ıve tˇreba objevit jej´ı moˇznosti a limity, stejnˇe jako poznat jak se s n´ı pracuje. C´ılem pr´ace je vytvoˇrit uˇzivatelsky pˇr´ıjemnou aplikaci(kap.5.3) na tvorbu rozvrhu ˇskoly, bˇeˇz´ıc´ı na Silverlightu.
1
Kapitola 2 RIA Koncept bohat´ ych internetov´ ych aplikac´ı existoval mnoho let pod r˚ uzn´ ymi jm´eny(Remote Spring-Microsoft 1998, X Internet-Forrester Research 2000 ), ale aˇz v roce 2002 byl uveden pojem RIA. Ten zavedla spoleˇcnost Macromedia(nyn´ı Adobe). Pojem RIA (Rich Internet Application) se ned´a jednoznaˇcnˇe specifikovat. Definice Rich Internet Application obsahuje tˇri slova Internet, Application jejich v´ yznam je jednoznaˇcn´ y. Se sl˚ uvkem Rich uˇz to tak jednoznaˇcn´e nen´ı. Pr´avˇe ten dˇel´a z RIA nejednoznaˇcn´ y pojem. Obecnˇe jsou RIAs webov´e aplikace, kter´e se snaˇz´ı pˇreklenout rozd´ıly mezi klasickou webovou aplikac´ı a aplikac´ı desktopovou . RIA aplikace se snaˇz´ı v r´amci webov´eho prohl´ıˇzece napodobovat desktopov´e aplikace sv´ ym vzhledem i chov´an´ım a poskytnout tak vyˇsˇs´ı uˇzivatelsk´ y komfort. Napˇr´ıklad vˇsem zn´am´e GMail nebo OutlookWebAcces jsou RIA. Samozˇrejmˇe ˇze ne jenom tyto dvˇe, jmenovat bychom mohli tis´ıce dalˇs´ıch webov´ ych, v dneˇsn´ı dobˇe hlavnˇe AJAXov´ ych(kap.2.1.1.1), aplikac´ı. Pak by bylo moˇzn´e popsat sl˚ uvko Rich jako tu funkcionalitu, kterou n´am nab´ız´ı tyto technologie nav´ıc oproti tˇem nynˇejˇs´ım. Pojem RIA se st´av´a do jist´e m´ıry marketingov´ ym tah´akem, proto se hodnˇe v´ yrobc˚ u snaˇz´ı d´at tuto n´alepku produkt˚ um, kter´e by dˇr´ıve za internetov´e povaˇzoval jen m´alokdo. K tˇem patˇr´ı podle Adobe RIA aplikace, dle m´eho n´azoru desktopov´a Adobe Media Player nebo eBay Desktop atd... Tetno pohled na vˇec je nov´ y ale zcela zˇrejm´ y, d˚ uraz je kladen na vn´ıman´ı uˇzivatele, ale uˇz ne tak na technologii, tedy jestli bˇeˇz´ı na internetu nebo na naˇsem lok´aln´ım poˇc´ıtaˇci. To je moˇzn´e d´ıky tomu, ˇze nen´ı tˇreba ˇza´dn´e instalace, aplikace se pˇri zobrazen´ı str´anky(s RIA aplikac´ı) naˇcte v nejnovˇejˇs´ı verzi. Pˇri pouˇz´ıv´an´ı RIA je tak´e menˇs´ı riziko infikace poˇc´ıtaˇce virem. Tradiˇcn´ı internetov´e aplikace funguj´ıc´ı jako client-server. Vˇsechny se mus´ı vypoˇr´ad´avat s HTTP protokolem a jeho strukturou dotaz-odpovˇed’. Pak i pˇri sebenˇs´ı zmˇenˇe na stranˇe 2
KAPITOLA 2. RIA
3
klienta je vyvol´ana ˇz´adost, odesl´ana na server. Po obslouˇzen´ı ˇza´dosti serverem je posl´ana zpˇet odpovˇed’. Ta ale obsahuje celou pˇredeˇslou str´anku plus tu jednu malou zmˇenu, kterou uˇzivatel provedl. Tato nev´ yhoda je jedna z d˚ uvod˚ u vzniku RIA.
2.1
Prostˇ redky RIA
Jak jsme zm´ınili v pˇredchoz´ı kapitole RIA aplikace jsou v dneˇsn´ı dobˇe hlavnˇe AJAXov´e. Avˇsak neplat´ı, ˇze RIA je AJAX. Na trhu je mnoho dalˇs´ıch technologi´ı pro tvorbu bohat´ ych internetov´ ych aplikac´ı, kter´e by se daly rozdˇelit do dvou skupin: • bez plug-inu do prohl´ıˇzeˇce • s plug-inem do prohl´ıˇzeˇce. Plug-in do prohl´ıˇzeˇce znamen´a instalaci zasuvn´eho modulu do vaˇseho prohl´ıˇzeˇce(Software), ten pak pracuje jako doplˇ nkov´ y modul jin´e aplikace a rozˇsiˇruje tak jej´ı funkˇcnost.
2.1.1
Technologie bez potˇ reby plug-inu
2.1.1.1
AJAX(Asynchronous JavaScript and XML)
Ajax nen´ı samostatnou technologi´ı, n´ ybrˇz obecn´ ym konceptem. AJAX pˇredtavuje cestu, kter´a maxima´ılnˇe vyuˇz´ıv´a dneˇsn´ı technologie. Zastˇreˇsuje n´asleduj´ıc´ı z nich: • HTML, CSS a JavaScript (JScript) • XMLHttpRequest (Mozilla, MSIE) • Document Object Model (DOM). To pˇrevratn´e na AJAXu oproti ”norm´aln´ımu”webov´emu konceptu je zp˚ usob vyuˇzit´ı XMLHttpRequest k vol´an´ı serveru. Oproti klasick´emu webov´emu modelu, kde kaˇzd´a zmˇena stavu u klienta vyˇzaduje obnoven´ı cel´e str´anky, je to u Ajaxu jinak. AJAX, jak jiˇz z n´azvu vypl´ yv´a, pracuje asynchronnˇe. To znamen´a, ˇze u webu vytvoˇren´eho pomoc´ı AJAXu, se neobnovoje cel´a str´anka, ale jen ta ˇca´st, kter´a je k tomu urˇcena. Poˇzadavek na zmˇenu stavu se vyˇrizuje pˇres XMLHttpRequest (asynchronn´ı vol´an´ı serveru), server obslouˇz´ı poˇzadavek a poˇsle odpovˇed’ zpˇet ta je opˇet zpracov´ana v XMLHttpRequest a nyn´ı nastane zmˇena patˇriˇcn´e ˇca´sti. Klient a server si pˇred´avaj´ı informace v XML,
KAPITOLA 2. RIA
4
AJAX u klienta je reprezentov´an JavaScriptem. Popsan´ y rozd´ıl oproti klasick´emu konceptu dotaz-odpovˇed’ je vidˇet na obr.2.1 , kde Ajax engine je XMLHttpRequest.
Obr´azek 2.1: Porovn´an´ı AJAXu a klasick´eho internetov´eho modelu (pˇrevzato z [3])
Podrobnˇejˇs´ı informace o AJAXu najdete v [8].
2.1.2
Technologie s potˇ rebou plug-inu
2.1.2.1
Silverlight
Technologie Silverlight je odpovˇed’ Microsoftu na st´ale vˇetˇs´ı popularitu, rozˇs´ıˇren´ı RIA aplikac´ı. Je to mlad´ y projekt, tuto technologii pˇredstavil Microsoft v prosinci roku 2006 ve verzi 1.0, kter´a vˇsak byla ofici´alnˇe dokonˇcen´a, se vˇsemi v´ yvojov´ ymi n´astroji, aˇz v bˇreznu roku 2007. Avˇsak z pohledu v´ yvoje aplikac´ı je zaj´ımav´a aˇz verze Silverlight 2.x, vˇsechny informace zde uveden´e se t´ ykaj´ı verze 2.x. Detailn´ı popis technologie je uveden v kapitole
KAPITOLA 2. RIA
5
3. Uˇzivatelsk´e rozhran´ı je definov´ano ve znaˇckovac´ım jazyku (XAML), o v´ ykonnou ˇca´st se star´a objektovˇe orientovan´ y programovac´ı jazyk(nˇekter´ y z .NET jazyk˚ u) a k bˇehu je vyˇzadov´an plugin v prohl´ıˇzeci. Aby mˇel Microsoft ˇsanci uspˇet v konkurenci Flash Playeru s v´ıce neˇz ˇctyrmi miliardami instalac´ı a trˇzn´ım pod´ılem vetˇs´ım neˇz 90 procent, musel nab´ıdnout nˇejakou kl´ıˇcovou v´ yhodu. Nˇeco co konkurence nem´a. T´ım je .NET. Jeho pouˇzit´ı v Silvelrightu je moˇzn´e d´ıky stejn´emu CLR(Common Language Runtime) v obou bˇehov´ ych prostˇred´ıch jak v Silverlightu tak .NETu. V´ yhody poskytovan´e .NETem jsou napˇr´ıklad moˇznost programov´an´ı v nˇekter´em z jeho jakzyk˚ u (C], VB, nebo tak´e RUBY, Phython, ..) pouˇz´ıv´an´ı dobˇre zn´am´ ych tˇr´ıd a hlavnˇe snadn´a integrace Silverlightu do jiˇz vytvoˇren´ ych aplikac´ı. .NET je vyspˇel´a platforma a t´ım poskytuje Silverlightu velkou v´ yhodu(vˇeci jako LINQ, kompoziˇcn´ı model WPF, ...). Silverlight je, narozd´ıl od .NETu, multiplarformn´ı. Staˇc´ı prohl´ıˇceˇc (nyn´ı podporovan´e jsou Explorer, Firefox, Safari pro Linux od Novelu Moonlight), naistalovan´ y plug-in(velikost instalace je necel´ ych 5M B) a samozˇrejmˇe pˇripojen´ı. Multiplatformnost je velmi d˚ uleˇzit´ ym aspektem dneˇsn´ı doby, proto se Silvelright st´av´a zaj´ımav´ ym n´astrojem pro tvorbu RIAs(kap.6.4). 2.1.2.2
Adobe Flex
Technologie Adobe Flex je v dneˇsn´ı dobˇe dominantn´ı na trhu. Je to tak´e proto, ˇze aplikace vytvoˇren´e ve Flexu bˇeˇz´ı ve Flash Playeru s bezkonkurenˇcn´ım trˇzn´ım pod´ılem. Tak´e pro v´ yvoj´aˇre je pˇr´ıvˇetiv´ y: • definice uˇzivatelsk´ ych rozhran´ı pomoc´ı MXML(je podobn´e HTML) • stylov´an´ı aplikace lze zaˇr´ıdit pomoc´ı podmnoˇziny CSS • ActionScript 3 zase dobˇre kombinuje rysy JavaScriptu a Javy. Byly zmenˇseny bari´ery pro v´ yvoj´aˇre pˇrich´azej´ıc´ı z nˇekolika ruzn´ ych smˇer˚ u. Hlavn´ı v´ yhody Flexu jsou v jeho mnohalet´em pouˇz´ıv´an´ı a v´ yvoji. To d´av´a pˇredpoklad, ˇze zaˇc´ıt budovat aplikaci ve Flexu je s´azka na jistotu. Flex je zdarma. Je to open source, jeho nov´e prostˇred´ı Adobe AIR(Adobe Integrated Runtime) m˚ uˇze aplikace spouˇstˇet nejen v prohl´ıˇzeˇci, ale tak´e na desktopu. O Flex se star´a velk´a skupina lid´ı, existuje ˇrada komponent a tutori´al˚ u, prostˇe m´a toho za sebou jiˇz mnoho. To vˇsechno jsou d˚ uvody proˇc je dnes Flex(Flash) zdaleka nejpouˇz´ıvanˇejˇs´ı RIA technologie(vedle AJAXu).
KAPITOLA 2. RIA 2.1.2.3
6
Java, JavaFX
Java byla jednou z prvn´ıch technologii schopnou implementace RIA aplikac´ı. Pouˇz´ıvala k tomu Java applety. Jde o jednu z prvn´ıch, avˇsak skoro nepouˇz´ıvanou technologii, protoˇze Java applety si vybudovaly, b˚ uhv´ı proˇc, tak ˇspatnou reputaci, ˇze jejich pouˇz´ıv´an´ı se povaˇzovalo sp´ıˇs za chybu neˇz pˇr´ınos. JavaFX je v souˇcastnosti v plenk´ach, opˇet bude pouˇz´ıvat jako bˇehov´e prostˇred´ı Javu. Veˇsker´e informace o JavaFX jsou jen mal´e stˇr´ıpky a na jejich slepen´ı dohromady si budeme muset poˇckat. 2.1.2.4
a ti druz´ı...
Jak uˇz v´ıme v´ yznam RIA nen´ı pˇresnˇe vymezen, proto bychom mezi technologick´e z´astupce mohli ˇradit Google Gears, XUL, a dalˇs´ı. Nˇekter´e jsou hodnˇe podobn´e zmiˇ novan´ ym mainstreamov´ ym technologi´ım, jin´e, jako napˇr´ıklad Google Gears, nab´ızej´ı u ´plnˇe nˇeco nov´eho, jin´eho(podpora offline pr´ace). Je asi dobr´e vˇedˇet, ˇze nˇeco takov´eho existuje, ale mezi RIA technologie je ˇradit s ˇcist´ ym srdcem nem˚ uˇzeme.
Tyto technologie maj´ı urˇcitˇe sv´e pro a proti. Mezi pozitiva bychom mohli zaˇradit jednotnost plug-inu(pro vˇsechny prohl´ıˇzeˇce stejn´ y, odpad´a ladˇen´ı pro r˚ uzn´e prohl´ıˇzeˇce),nejsou zde technologick´a omezen´ı, jak Flex tak Silverlight maj´ı funkˇcn´ı WYSIWYG a dalˇs´ı v´ yvojaˇrsk´e ”lah˚ udky”(pro r˚ uzn´e v´ yvoj´aˇrsk´e n´astroje r˚ uzn´e) jako je kontrola syntaxe, debugging, atd... Tedy i ve v´ yvoji RIA aplikac´ı je zˇrejm´a snaha pˇribliˇzov´an´ı se v´ yvoji desktopov´ ych aplikac´ı. Hlavn´ı nev´ yhody jsou dvˇe. Velk´e. Kv˚ uli nim napˇr´ıklad Google pouˇz´ıv´a st´ale AJAX. ˇ adn´a z RIA platforem nen´ı tak rozˇs´ıˇren´a jako webov´e prohl´ıˇzeˇce. Je to potˇreba plug-inu. Z´ A jako druh´a je podstata fungovan´ı RIA aplikac´ı v prohl´ıˇzeˇci. Aˇckoli se zd´a ˇze jde o klasickou webovou str´anku nˇekter´e vˇeci zde nefunguj´ı. Nefunguj´ı kl´avesov´e zkratky prohl´ıˇzeˇce, tlaˇc´ıtko ”zpˇet”a dalˇs´ı vˇeci. Vˇetˇsina je ˇreˇsiteln´a, ale velmi n´aroˇcn´a.
KAPITOLA 2. RIA
2.2
7
Silverlight vs. Adobe Flash
Silverlight je zelen´aˇc na trhu webov´e interaktivity. Na zaˇc´atku sv´e existence (verze 1.0) by kl´an´ı tˇechto dvou ryval˚ u bylo jednoznaˇcn´e. Bez vˇetˇs´ıch okolk˚ u by vyhr´al Adobe Flash. Od uvolnˇen´ı verze Silverlight 2, kter´a pˇrinesla znaˇcn´ y pokrok (v´ıce v [4]) je srovn´an´ı moˇzn´e a uˇz ne tak jednoznaˇcn´e. Srovn´avat m˚ uˇzeme z nˇekolika pohled˚ u(oblast´ı pouˇzit´ı). V´ yvoj aplikac´ı Flex je na trhu jiˇz nˇekolik let, pro v´ yvoj RIA aplikac´ı se znaˇcnˇe osvˇedˇcil. Poskytuje background mnoha hotov´ ych aplikac´ı a pˇr´ıklad˚ u ve vˇsech moˇzn´ ych oblastech pouˇzit´ı. Silverlight, vˇsak sv´eho soupeˇre zdatnˇe st´ıh´a, jednoznaˇcn´ ym plusem je moˇznost z´apisu aplikaˇcn´ı logiky v jazyc´ıch .NETu, m´a lepˇs´ı podporu spolupr´ace s prohl´ıˇzeˇcem neˇz Flex. Zkr´atka Silverlight, d´ıky komfortn´ım moˇznostem ladˇen´ı a v´ yvoje aplikace bude z´ısk´avat st´ale v´ıce pˇr´ıznivc˚ u a s´ıly soupeˇr˚ u se budou postupnˇe vyrovn´avat. Jednoduch´ e animace Nev´ yhodou Flashe, pˇri tvorbˇe jednoduch´ ych aplikac´ı, je potˇreba Adobe Flashe. Silverlight pouˇz´ıv´a pro grafiku (jej´ı reprezentaci) textov´ y form´at XAML. Do tohoto form´atu existuje mnoˇzstv´ı konvertot˚ u z grafick´ ych a animaˇcn´ıch program˚ u. Proto lze vytv´aˇret animace bez nutnosti n´akupu dalˇs´ıho softwaru. Silverlight je v t´eto oblasti lepˇs´ı. Streamov´ an´ı videa V t´eto oblasti, i pˇres zkuˇsenosti soupeˇre, vyhr´av´a Silverlight. Moˇznost pˇrehr´av´an´ı vide´ı v HD kvalitˇe, na cel´e obrazovce jej kapatultovalo pˇred Flash. Microsoft poskytuje na sv´em serveru kaˇzd´emu uˇzivateli 10GB m´ısta zdarma pro ukl´ad´an´ı vide´ı. Dalˇs´ım argumentem pro Silverlight je podpora WMW form´atu, naproti od flashov´eho FLV jde o standart. V oblasti streamovan´eho videa se d´a pˇredpokl´adat, ˇze hvˇezda Silverlightu bude stoupat a naopak Flash upadat.
Kdo se stane v´ıtˇezem kl´an´ı dvou hlavn´ıch technologi´ı pro tvorbu RIA aplikac´ı? Jsou to bˇeˇzn´ı uˇzivatel´e. Dalˇs´ı hr´aˇc na tomto poli zvyˇsuje konkurenci a ta zde dlouhou dobu chybˇela. Silverlight bude urˇcitˇe vyuˇz´ıv´an k pˇrehr´av´an´ı videa zat´ımco v komplexnˇejˇs´ıch aplikac´ıch si bude muset sv˚ uj prostor jeˇstˇe vydob´ıt.
Kapitola 3 Silverlight ”Silverlight is a new cross-browser, cross-platform implementation of the .NET Framework for building and delivering the next generation of media experiences and Rich Interactive Applications(RIA) for the web.”, tak takhle definuje Microdoft Silverlight na sv´ ych str´ank´ach. Co to je Silverlight jsme jiˇz nast´ınili v kapitole 2.1.2.1, zde se budeme zab´ yvat jeho funkˇcnost´ı. Jeden z d˚ uvod˚ u vzniku Silverlightu, vedle toho marketingov´eho, byla potˇreba nab´ıdnout v´ yvoj´aˇru ´m ASP.NETu alternativu k Flashi. Aplikace s Flashem vyv´ yjen´e v ASP vyˇzadovaly zcela separovan´ y designersk´ y n´astroj, jin´ y programovac´ı jazyk(ActionScript) i pouˇzit´ı programovac´ıho jazyka Flex. Tak´e neexistuje ˇz´adn´ y zp˚ usob jak generovat Flash aplikace pouˇz´ıvaj´ıc´ı k´od .NETu na serveru, to znamen´a, ˇze integrace obsahu Flashe a ASP.NET je obt´ıˇzn´a. Silverlight je krokem pro zv´ yˇsen´ı a zlepˇsen´ı moˇznost´ı v´ yvoje bohatˇe vybaven´ ych internetov´ ych aplikac´ı. Silverlight m´a v mnoha ohledech obdobn´e funkce jako Flash. M´a vˇsak nav´ıc jednu podstatnou vˇec a to mateˇrsk´ y jazyk. V Silverlightu je j´ım C]. Z´aroveˇ n pouˇz´ıv´a celou ˇradu pojm˚ u z .NETu. Proto mohou v´ yvoj´aˇri ps´at jak Silverlight aplikaci tak k´od pro server ve stejn´em jazyce podporovan´em .NETem(C], VB).I pouˇz´ıv´an´ı nˇekter´ ych abstrakc´ı jako jsou proudy, collections, LINQ, atd... je zde podporov´ano. Na internetov´ ych str´ank´ach Microsoftu je moˇzn´e naj´ıt informaci, ˇze plug-in Silverlightu je dnes naistalovov´an na v´ıce neˇz jedn´e ˇctvrtinˇe poˇc´ıtaˇc˚ u na svˇetˇe a st´ale v´ıce web˚ u jej zaˇc´ın´a vyuˇz´ıvat. Zat´ım nejvˇetˇs´ım projektem proveden´ ym pomoc´ı t´eto technologie byly videopˇrenosy NBC z Olympijsk´ ych v Pekingu.
8
KAPITOLA 3. SILVERLIGHT
3.1
9
Historie
Silverlight je odpovˇed´ı Microsoftu na jiˇz zabˇehnut´ y, a z 90-ti% rozˇs´ıˇren´ y na vˇsech poˇc´ıtaˇc´ıch, Adobe Flash. Ten se sv´ ym Flexem poskytuje podobn´e funkce jako Silverlight. Microsoft si mysl´ı, ˇze pokud bude m´ıt Silvelight dostateˇcnˇe zaj´ımav´ y obsah uˇzivatel´e si jej do sv´ ych prohl´ıˇzeˇc˚ u nainstaluj´ı. Od poˇca´tku, za kter´ y se d´a povaˇzovat prvn´ı uvolnˇen´ı Silverlight verze 1.0 5.9.2007, kde bylo moˇzn´e programovat pouze pomoc´ı JavaScriptu, byla hlavn´ım tah´akem pro v´ yvoj´aˇre vidina moˇznosti psan´ı Silvelright aplikac´ı v .NET programovac´ıch jazyc´ıch (vyˇsˇs´ı verze by mˇely obsahovat .NET Framework 3.0). Tato moˇznost pˇriˇsla s verz´ı 1.1, kter´a se d´ıky sv´emu velk´emu pˇr´ınosu a radik´aln´ım zmˇen´am v˚ uˇci verzi 1.0 pˇrejmenovala na Silvelright 2.0. Zde je jiˇz zmiˇ novan´a moˇznost opˇr´ıt vytv´aˇrenou aplikaci o nˇekter´ y z .NET jazyk˚ u, jsou implentov´any z´akladn´ı prvky(Button, TextBlock, ...). Verze Silvelright 2.0 pˇriˇsla na svˇetlo svˇeta v bˇreznu roku 2008, ale byla ve f´azi Beta. To znamenalo jedin´e. Ne vˇsechno fungovalo tak jak by si ˇclovˇek pˇredstavoval. Porovn´an´ı obou verz´ı je k vidˇen´ı na http://silverlight.net/GetStarted/overview.aspx. V dneˇsn´ı dobˇe je k m´an´ı fin´aln´ı verze Silverlight 2, uvolnˇen´a na podzim roku 2008. Prostˇredkem pro design Silverlight aplikac´ı maj´ı b´ yt produkty ˇrady Microsoft Expression. Poˇca´teˇcn´ı verze program˚ u obsaˇzen´ ych v tomto bal´ıku z´ıskal Microsoft akviz´ı jin´e firmy. Na str´ank´ach Expression najdete detaily k jednotliv´ ym produkt˚ um. Dnes jsou k dispozici Beta verze. T´ ym v´ yvoj´aˇr˚ u vˇsak neust´ale pracuje na dalˇs´ıch uvolnˇen´ıch.
3.2
Instalace
Instalac´ı Silverlightu(SL) rozum´ıme instalaci z´asuvn´eho modulu do prohl´ıˇzeˇce. Pokud uˇzivatel navˇst´ıv´ı str´anku se Sivlerlight obsahem a nem´a potˇrebn´ y plug-in, na m´ıstˇe kde m´a b´ yt SL ˇca´st, se objev´ı banner pro jeho instalaci(viz. obr.3.1).
Obr´azek 3.1: Banner nepˇr´ım´e instalace Silverlightu
Po kliknut´ı na banner se otevˇre instalaˇcn´ı str´anka
KAPITOLA 3. SILVERLIGHT
10
http://www.microsoft.com/silverlight/install.aspx. Zde je ovˇeˇren pouˇz´ıvan´ y prohl´ıˇzeˇc a syst´em. Pokud vˇse vyhovuje, dalˇs´ım krokem je potvrzen´ı tlaˇc´ıtka Install(zaˇc´ın´ame se stahov´an´ım souboru o velikosti okolo 4.5MB a pˇr´ıponou .exe). Otevˇren´ım staˇzen´eho souboru se zobraz´ı okno s pr˚ ubˇehem instalace. Po dokonˇcen´ı je tˇreba jeˇstˇe restartovat vˇsechny prohl´ıˇzeˇce a SL je pˇripraven k pouˇzit´ı. Pokud je instalace provedena napˇr´ıklad v Internet Exploreru, tato instalace je automaticky pouˇz´ıv´ana i dalˇs´ımi prohl´ıˇzeˇci. Moˇzn´a jste si vˇsimli n´azvu obr´azku obr.3.1. Je v nˇem nepˇr´ım´a instalace Silverlightu. Pˇri budov´an´ı SL aplikace m˚ uˇzeme pouˇz´ıt vlastnost inplaceInstallPrompt a nastavit ji na false. Tuto vlastnost najdeme v souboru n´ azevProjektu.htm, v tagu <script>(funkce createSilverlight). T´ım doc´ıl´ıme nepˇr´ım´e instalace odpov´ıdaj´ıc´ı popisu nahoˇre(po kliknut´ı na obr.3.1 se dostaneme na silverlight str´anku, odtud st´ahneme instalaˇcn´ı soubor ten pak naistalujeme). Opaˇcn´ ym nastaven´ım vlastnosti doc´ıl´ıme pˇr´ım´e instalace. Pˇr´ım´a instalace neobsahuje krok ovˇeˇrov´an´ı na SL str´ance, tedy po kliknut´ı na banner(ten nevypad´a stejnˇe jako na obr.3.1, je doplnˇen o licenˇcn´ı podm´ınky) rovnou st´ahneme instalaˇcn´ı soubor. Odinstalovat Silverlight je moˇzn´e v poloˇzce, Panelu n´astroj˚ u, Pˇridat nebo odebrat programy.
3.3
Architektura
Architektura Silverlightu se odv´ıj´ı od jeho ˇclenstv´ı ve skupinˇe .NET Frameworku 3.0.
KAPITOLA 3. SILVERLIGHT
11
Obr´azek 3.2: Silverlight platforma(pˇrevzato z [7])
Platforma obsahuje dvˇe hlavn´ı ˇca´sti, plus instalaˇcn´ı a update komponentu(viz.tab.3.1). Komponenta
Popis
Core presen-
Obsahuje komponenty a sluˇzby orientovan´e na interakci uˇzivatele,
tation frame-
stejnˇe jako XAML(kap.3.4.1) pro deklaraci layoutu. tab.3.2
work .NET Frame-
Podmnoˇzina .NET Frameworku, kter´a obsahuje komponenty a kni-
work for Sil-
hovny, zahrnuj´ıc´ı CLR, garbage collection, base class libraries,...
verlight Installer and
Instalace a aktualizace, kter´e zjednoduˇsuj´ı proces instalov´an´ı ap-
updater
likace, stejnˇe jako n´asledn´e updaty. Tabulka 3.1: Popis hlavn´ıch ˇc´ ast´ı Silverlight platformy
Platforma je kombinac´ı jiˇz existuj´ıc´ıch technologi´ı, n´astroj˚ u a sluˇzeb. Tato skuteˇcnost ulehˇcuje pr´aci v´ yvoj´aˇr˚ um, stejnˇe jako jim poskytuje dobr´ y z´aklad ovˇeˇren´ ych technologi´ı.
KAPITOLA 3. SILVERLIGHT
12
Feature
Popis
Vstup
Obsluhuje vstupy z hardwarov´ ych zaˇr´ızen´ı jako je kl´avesnice, myˇs, a dalˇs´ı vstupn´ı zaˇr´ızen´ı.
User Interface
Vykresluje vektorovou a bitmapovou grafiku, animace, text. O to
vykreslov´an´ı
se star´a UI thread
Media
Uv´ad´ı playback a management r˚ uzn´ ych typ˚ u audio a video soubor˚ u jako *.WMP a ∗.mp3 soubory.
Control
Podporuje rozˇsiˇriteln´e contorly, ty se daj´ı pˇrizp˚ usobit stylov´an´ım a pomoc´ı ˇsablon.
Layout
Umoˇzn ˇuje dynamick´e umist’ov´an´ı UI element˚ u.
Data binding
Umoˇzn ˇuje spojen´ı UI element˚ u s daty.
XAML
Poskytuje parser pro XAML. Tabulka 3.2: Core presentation features Silverlight platformy
.NET Framework pro Silverlight je pil´ıˇrem k robustn´ımu, objektovˇe orientovan´emu v´ yvoji internetov´ ych aplikac´ı, pro kter´e neb´ yvala tato podpora obvykl´a. Feature
Popis
Data
Podporuje LINQ to SQL a LINQ to XML d´ıky nimˇz je proces integrace dat z r˚ uzn´ ych zdroj˚ u velmi usnadnˇen. Pro obsluhu dat jsou tak´e podporov´any serializace a pouˇzit´ı XML.
Base class li-
Soubor .NET knihoven, kter´e poskytuj´ı z´akladn´ı program´atorsk´e
brary
funkce(regul´arn´ı v´ yrazy, vstupy, v´ ystupy, ...).
WCF
Poskytuje prostˇredky pro zjednoduˇsen´ı pˇr´ıstupu k vzd´alen´ ym dat˚ um a sluˇzb´am. To zahrnuje browser object, HTTP poˇzadavek a odpovˇed’, podpora pro JSON, POX a SOAP services.
CLR
poskytuje pamˇet’ov´ y management, garbage colection, vyhodnocov´an´ı vyj´ımek.
WPF
Poskytuje bohat´ y soubor kontrol, zahrnuj´ıc´ı Button, Calendar, CheckBox, DataGrid, DatePicker, HyperlinkButton, ListBox, RadioButton a ScrollViewer..
DLR
Podporuje
dynamick´e
programovac´ı
jazyky(IronPython,
JavaScript) pro tvorbu Silverlight aplikac´ı. Tabulka 3.3: .NET Framework pro Silverlight
KAPITOLA 3. SILVERLIGHT
13
Silverlight nab´ız´ı nˇekter´e dalˇs´ı n´astroje pro tvorbu RIA. Nˇekter´e jsou pops´any v tabulce n´ıˇze. Feature
Popis
Isolated stor-
Bezpeˇcn´ y pˇr´ıstup ze Silverlight aplikace na soubor uloˇzen na
age
m´ıstn´ım disku poˇc´ıtaˇce. Omezen´a velikost prostoru(1MB).
Souborov´ y
Bezpeˇcn´ y File Open dialog k lehˇc´ımu naˇc´ıt´an´ı soubor˚ u.
management Serializace
Podpora serializace CLR typ˚ u do XML(i JSON).
Packing
Aplikaˇcn´ı tˇr´ıda a n´astroje na vybudov´an´ı .xap bal´ıˇcku. .xap bal´ıˇcek obsahuje aplikaci a entry point pro bˇeh Silverlight plug-inu.
XML hovny
kni-
Tˇr´ıdy XmlReader a XmlWriter zjednoduˇsuj´ı pr´aci s XML daty z Web servis˚ u. XLinq d´ıky nˇemu je moˇzn´e dotazovat se z programovac´ıch jazyk˚ u .NETu pˇr´ımo na XML data. Tabulka 3.4: Pˇridan´e Silverlight Programming Features
V dalˇs´ı ˇca´sti t´eto kapitoly budou podrobnˇeji pops´any nˇekter´e ˇca´sti Silverlight platformy. Budou zde zm´ınˇeny hlavnˇe ty se kter´ ymi budeme d´ale pracovat nebo jsou nezbytn´e pro chod a tvorbu Silvelright aplikace.
3.3.1
CLR(Common Language Runtime)
Univerz´aln´ı bˇehov´e prostˇred´ı pro aplikace v .NET. Pˇri n´avrhu aplikace zaˇc´ın´ame v´ ybˇerem programovac´ıho jazyka. V prostˇred´ı .NET n´am pr´avˇe CLR poskytuje celou ˇradu jazyk˚ u, nez´aleˇz´ı mu na tom v jak´em jazyce je program naps´an, dokonce se m˚ uˇze skl´adat z jednotliv´ ych ˇca´st´ı, kter´e jsou naps´any v r˚ uzn´ach jazyc´ıch. Funguje to n´asledovnˇe. Zdrojov´e k´ody libovoln´eho programovac´ıho jazyka .NET jsou pˇreloˇzeny do intermedi´aln´ıho jazyka (MSIL – Microsoft Intermediate Language) a aˇz teprve pˇri spuˇstˇen´ı programu se zkompiluje program z MSIL do k´odu pro dan´ y procesor a to je pr´ace pro CLR. Jak cel´ y cyklus vypad´a je vidˇet na obr.3.3.
KAPITOLA 3. SILVERLIGHT
14
Obr´ azek 3.3: Pˇreklad .NET k´odu
Nen´ı to vˇsak jedin´a funkce CLR. Star´a se o typovou bezpeˇcnost, ovˇeˇrov´an´ı k´odu, management pamˇeti, sbˇer odpadk˚ u atd... Vˇse co pokr´ yv´a je pˇrehlednˇe vidˇet na obr.3.4.
Obr´azek 3.4: Oblasti ˇcinnosti CLR
Intermedi´aln´ı jazyk MSIL byl zaveden kv˚ uli pˇrenositelnosti na r˚ uzn´e platformy pod-
KAPITOLA 3. SILVERLIGHT
15
poruj´ıc´ı OS Windows. V nˇekter´ ych literatur´ach se pojem CLR pˇripodobˇ nuje pojmu virtu´aln´ı stroj, kter´ y pouˇz´ıv´a Java. V´ıce o t´ematice najdeme v literatuˇre [2].
3.4
WPF(Windows Presentation Foundation)
Grafick´ y syst´em .NET Frameworku 3.0 a vyˇsˇs´ı. Jde o cel´ y nov´ y grafick´ y Framework pro psan´ı Windows aplikac´ı. Pˇredch˚ udcem WPF jsou WinForms, mohlo by se zd´at, ˇze WPF nahrazuje WinForms, ale to pravda nen´ı. WPF poskytuje dalˇs´ı zp˚ usob deklarace, tvorby Windows aplikac´ı. Prostˇredkem je jazyk XAML(kap.3.4.1). Poˇra´d zde mluv´ıme o Windows aplikac´ıch, technologie WPF se ale pouˇz´ıv´a i u aplikac´ı internetov´ ych(Silverlight). Hlavn´ı d˚ uvod vzniku WPF byla grafika. Vzpomeˇ nme na nˇekter´e windows aplikace, vˇetˇsina z nich je, nebo do ned´avna b´ yvala, formul´aˇrov´eho typu. Pokud m´ate fantazii a popust´ıte j´ı uzdu, jste d´ıky WPF schopni vyuˇz´ıvat mnoho r˚ uzn´ ych moˇznost´ı k tvorbˇe grafiky: • vektorov´a grafika • animace(ˇcasov´a, pouˇzit´ı frames, 3D animace, atd...) • multim´edia(audio, video) • DataBinding(prov´az´an´ı dat) • efekty(st´ıny, z´aˇre, atd...) ... a pak je moˇzn´e, ˇze WinForm aplikace bude vypadat tˇreba tak jak na n´asleduj´ıc´ım obr´azku(obr.3.5)
KAPITOLA 3. SILVERLIGHT
16
Obr´azek 3.5: Uk´azka WPF desktopov´e aplikace
M˚ uˇzete si ˇr´ıct, ”No jo, ale takov´ehle aplikace budou hodnˇe n´aroˇcn´e, procesor bude m´ıt co dˇelat.”Zat´ımco aplikace zpracov´av´a procesor, grafick´a karta je m´enˇe, t´emˇeˇr v˚ ubec, vyt´ıˇzena. WPF bˇeˇz´ı na vrstvˇe DirectX, proto jsou WPF aplikace(jejich renderov´an´ı) zpracov´av´any grafickou kartou zat´ımco procesor m˚ uˇze dˇelat jin´e vˇeci. WPF je k dispozici v .NET Frameworku 3.0 a vyˇsˇs´ım. Pro korektn´ı bˇeh WPF aplikac´ı je nutn´e m´ıt naistalov´an .NET Framework 3.0 a vyˇsˇs´ı na vaˇsem poˇc´ıtaˇci. V OS Vista je jiˇz souˇca´st´ı z´akladn´ı instalace. Detaily, t´ ykaj´ıc´ı se WPF, lze naj´ıt v [12].
3.4.1
XAML(Extensible Application Markup Language)
Jde o znaˇckov´ac´ı jazyk zaloˇzen´ y na XML k tvorbˇe uˇzivatlesk´eho rozhran´ı. Tento jazyk je souˇca´st´ı WPF(kap.3.4). XAML vznikl, protoˇze tvorba UI za pomoci znaˇckovac´ıch jazyk˚ u(markup languages) je o mnoho elegantnˇejˇs´ı a pˇrehlednˇejˇs´ı neˇz v jazyc´ıch objektovˇe orientovan´ ych(VB, C]). Mezi znaˇckovac´ı jazyky patˇr´ı i zn´am´ y HTML, ten definuje UI u webov´ ych str´anek. Dalˇs´ı velkou v´ yhodou XAML je jistˇe oddˇelen´ı grafick´e a programov´e ˇc´asti. Pˇri tvorbˇe WPF aplikace jsou vytvoˇreny dva soubory. Jeden s pˇr´ıponou ∗.xaml, zde je definov´an vzhled aplikace. Druh´ y m´a pˇr´ıponu ∗.cs(pˇr´ıpona podle pouˇzit´eho programovac´ıho jazyka), v nˇem je implementov´ana logika aplikace. N´asleduj´ıc´ı k´od pˇredstavuje str´anku v Silverlight aplikaci(jm´enem SilverlightApplication9)
KAPITOLA 3. SILVERLIGHT
17
deklarovanou XAMLem. Zobraz´ı se b´ıl´a plocha o rozmˇerech 400px na 300px, uprostˇred kter´e je n´apis ”Hello amigos”, dole na str´ance je tlaˇc´ıtko s textem newControl.
Obr´azek 3.6: Uk´azka XAML k´odu
Pro experimenty s XAMLem v re´aln´em ˇcase lze vyuˇz´ıt XAMLPad, jednoduch´ y XAML editor.
3.5
WCF(Windows Communication Foundation)
WCF je ucelen´ y Framework na tvorbu komunikace mezi dvˇema ˇc´astmi pˇreloˇziteln´eho k´odu. WCF se objevilo stejnˇe jako WPF s pˇr´ıchodem .NET Frameworku 3.0(prosinec ˇ ık´ate si na co dalˇs´ı komunikaˇcn´ı technologie, vˇzdyt’ v souˇcasn´e dobˇe m´ame k 2006). R´ dispozici vˇeci jako DDL, DCOM, NET Framework remoting, Enterprise Services, Web Services, WSE,... Pˇr´ıchod WCF je ale zlomov´ y pro tvorbu distrubuovan´ ych aplikac´ı. Sjednocuje funkci vˇsech doposud pouˇz´ıvan´ ych Microsoft technologi´ı pro tvorbu tˇechto aplikac´ı. To vˇse je moˇzn´e d´ıky komunikaci zaloˇzen´e na webov´ ych sluˇzb´ach. Jeden z d˚ uvod˚ u vzniku WCF je lepˇs´ı implementace SOA(Service Oriented Architecture). SOA m´a rozd´ıln´e ˇca´sti k´odu/sluˇzby bˇeˇz´ıc´ı na zaˇr´ızen´ıch kolem svˇeta, klienti mohou pouˇz´ıvat tyto k´ody/sluˇzby. ˇ Tedy z´asadou SOA je izolovanost, to je l´epe pochopiteln´e na pˇr´ıkladu. Reknˇ eme, ˇze m´ame ˇ a vrac´ı pˇredpovˇed’ poˇcas´ı pro danou oblast. Vˇse o co webovou sluˇzbu, kter´a pˇrij´ım´a PSC ˇ z je vstup). Mezi serverem(host) a klientem je se star´a uˇzivatel je spr´avn´e zad´an´ı PSC(coˇ izolace. Nekomunikuj´ı mezi sebou pˇr´ımo, ale pomoc´ı sluˇzby. To jak komunikuj´ı si ”domluvili”v contractu(ˇr´ık´a co sluˇzba dˇel´a) sluˇzby(kap.3.5.1). WCF pouˇz´ıv´a SOAP zpr´avy pro komunikaci mezi dvˇema procesy, to vytv´aˇr´ı schopnost WCF aplikac´ı spolupracovat s jak´ ymkoli dalˇs´ım procesem komunikuj´ıc´ım pˇres SOAP(viz.
KAPITOLA 3. SILVERLIGHT
18
kap.3.5.1). Jak´akoli aplikace, pouˇz´ıvaj´ıc´ı WCF, m´a WSDL interface, proto je schopna pracovat s jak´ ymkoli WebServicem bez ohledu na to, na jak´e platformˇe sluˇzba funguje. Pˇred vznikem WCF z´avisel v´ ybˇer technologie na poˇzadavc´ıch vytv´aˇren´e aplikace a tak se nˇekdy st´avalo, ˇze jsme museli technologie kombinovat. Napˇr´ıklad ˇca´st aplikace pouˇz´ıvala pro komunikaci .NET remoting(d˚ uraz na v´ ykonnost aplikace) a pro komunikaci s jin´ ymi neˇz .NET aplikacemi zase WSE. V projektu zaloˇzen´em na WCF je vˇse zaloˇzeno na sluˇzb´ach a pomoc´ı sluˇzeb komunikujeme . Detaily o WCF lze naj´ıt napˇr´ıklad v [11].
3.5.1
Web Services(Webov´ e sluˇ zby)
Webov´e sluˇzby jsou konsorciem W 3C([3]) defionov´any jako ”software system designed to support interoperable machine-to-machine interaction over a network”. Jin´ ymi slovy jde o prostˇredek podporuj´ıc´ı komunikaci mezi aplikacemi napsan´ ymi v r˚ uzn´ ych programovac´ıch jazyc´ıch, bˇeˇz´ıc´ıch na r˚ uzn´ ych platform´ach nebo poˇc´ıtaˇc´ıch. Jak jsme zm´ınili v kap.3.5 je webov´a sluˇzba prostˇredkem pro komunikaci ve WCF. Poskytovatel sluˇzby nab´ız´ı data, klient najde adresu sluˇzby v registru webov´ ych sluˇzeb, naˇcte si jej´ı popis a m˚ uˇze ji volnˇe vyuˇz´ıvat. Webov´a sluˇzba je tedy prostˇredek pro tvorbu distribuovan´ ych syst´emu. Syst´em˚ u jejichˇz ˇc´asti jsou na r˚ uzn´ ych m´ıstech(poˇc´ıtaˇc´ıch) propojen´ ych s´ıt´ı. WebServices je technologie pro vzd´alen´e vol´an´ı procedur pomoc´ı pˇrenosu SOAP zpr´av(psan´e v XML) protokolem HTTP. S WebServices jsou spojeny tˇri z´akladn´ı pojmy: • SOAP zpr´avy(vzd´alen´e vol´an´ı procedur) • WSDL jazyk (popis poskytovan´ ych sluˇzeb) • UDDI a WSIL mechanismy(nalezen´ı sluˇzeb v ”seznamu”kde z´ısk´am jejich WSDL popis). SOAP(Simple Object Access Protocol) Soap je protokol pro komunikaci pomoc´ı zpr´av. Zpr´avy umoˇzn ˇuj´ı volat vzd´alen´e funkce protokolem HTTP. Ten pˇri vol´an´ı sluˇzby pˇrenese zpr´avu vytvoˇrenou v XML. Tato zpr´ava popisuje volanou funkci a jej´ı parametry. Jestliˇze m´ame webovou sluˇzbu s takov´ ymto obsahem.
KAPITOLA 3. SILVERLIGHT
19
.... [WebMethod] public int Add(int a, int b) { return a+b; } ...
SOAP zpr´ava pos´ılan´a jako dotaz na tuto sluˇzbu m˚ uˇze b´ yt: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body>
5 8
a sluˇzba pot´e odpov´ı zpr´avou: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body>
13
Takto vypad´a jednoduch´ y pˇr´ıpad komunikace webov´e sluˇzby pomoc´ı SOAP zpr´av. Vnitˇrku zpr´avy nemus´ıme rozumˇet, je generov´an a nen´ı moˇzn´e jej upravovat. WSDL(Web Services Description Language) Abychom mohli protokolem SOAP volat, mus´ıme vˇedˇet co volat, ale i jak to volat. Jazyk WSDL popisuje rozhran´ı sluˇzeb. To zahrnuje jm´ena dostupn´ ych operac´ı, typy parametr˚ u a n´avratov´ ych hodnot. Tak´e to na jak´em m´ıstˇe(port, URL, stroj) a jak(HTTP, HTTPS, ...) je sluˇzba k dispozici. Je to jeden ze standard˚ u pouˇz´ıvan´ ych pro popis sluˇzeb a rozhran´ı pomoc´ı XML. UDDI(Universal Description, Discover and Integration) Je pohodln´e m´ıt moˇznost hledat sluˇzby podporuj´ıc´ı XML snadno na Interntu. Proto byl zaveden UDDI registr, kter´ y umoˇzn ˇuje vyhled´av´an´ı a publikov´an´ı informac´ı o WebServicess. Publikuj´ı se pouze sluˇzby, kter´e jsou pro ˇsirokou veˇrejnost, ne uˇz tak ty, kter´e
KAPITOLA 3. SILVERLIGHT
20
pouˇz´ıv´a jen urˇcit´a v´ yvojov´a skupina(t´ ym). Webov´a sluˇzba jako takov´a je tvoˇrena dvˇema hlavn´ımi ˇc´astmi. Je to contract(obsah webov´e sluˇzby), kter´ y je ve WCF obvykle implementov´an jako interface s atributem [ServiceContract]. Druhou ˇca´st´ı je implementace metod obsaˇzen´ ych v interfacu(metadata). Mezi dalˇs´ı nezbytn´e ˇc´asti patˇr´ı • Adress tedy m´ısto kde sluˇzbu najdeme • Binding tedy jak´ y protokol pouˇz´ıv´ame pro komunikaci se sluˇzbou. Spolu s contractem tvoˇr´ı tyto dvˇe ˇca´sti EndPoint. Ten ud´av´a jak ServiceHost pˇredkl´ad´a sluˇzbu. Potom klient m˚ uˇze pouˇz´ıvat metody obsaˇzen´e v contractu. A proto ten kdo pouˇz´ıv´a webovou sluˇzbu, na z´akladˇe dan´ ych metadat a EndPointu, m˚ uˇze vytvoˇrit Proxy. Proxy, to je pr´azdn´a schr´anka, typ, kter´ y pˇredkl´ad´a vˇsechny detaily sluˇzby. Koneˇcnˇe klient a host spolu komunikuj´ı skrze r˚ uzn´e kan´aly(channels). Kan´al je popisov´an jako to skrze co proch´az´ı zpr´ava pˇri komunikaci klient-host a naopak. Okolo kan´al˚ u mohou b´ yt deklarov´any r˚ uzn´e Behaviors spojen´e se sluˇzbou. Behavior umoˇzn ˇuje modifikaci zpr´av proch´azej´ıc´ıch kan´alem. Pˇr´ıklad deklarace tˇechto ˇc´ast´ı je vidˇet na obr.4.7. Jak vypad´a komunikace mezi hostem a klientem pomoc´ı webov´e sluˇzby, ukazuje n´asleduj´ıc´ı sch´ema (obr.3.7).
Obr´azek 3.7: Sch´ema komunikace WebService
V prostˇred´ı Microsoft Visual Studia je k dispozici cel´a ˇrada druh˚ u webov´ ych sluˇzeb. V´ ybˇer z´aleˇz´ı na tom, kde bude sluˇzba nasazena, v jak´em typu aplikace. Pˇr´ıchod WCF
KAPITOLA 3. SILVERLIGHT
21
pˇrinesl jiˇz hotov´e ˇsablony webov´ ych sluˇzeb pro r˚ uzn´e technologie .NETu. S t´ım i Silverlightenabled WCF WebService, specielnˇe pro Silverlight. Tato speci´aln´ı sluˇzba pro Silverlight je vyj´ımeˇcn´a svou stavbou, nem´a oddˇelen´ y Interface, ten je v jednom souboru spolu s definicemi obsahu sluˇzby(metadaty). Tak´e pouˇzit´ ym typem bindingu viz.kap.4.2.2. Samozˇrejmˇe nen´ı stryktnˇe d´ano, ˇze pro Silverlight lze pouˇz´ıvat pouze tuto sluˇzbu. Volba je na v´ yvoj´aˇri, tato ˇsablona je pouze doporuˇrena.
Shrnout WCF bychom mohli do n´asleduj´ıc´ı vˇety. M´ame hosta a klienta, ti ”souhlas´ı”s contractem. Host(server) pˇredkl´ad´a EndPointy, ty jsou kombinac´ı Adresy, Bindingu a Contractu. Klient pouˇz´ıv´a proxy, kter´a je prov´az´ana s jednotliv´ ymi endpointy-prov´az´ana s jednotliv´ ymi contracty.
3.6
LINQ(Language Integrated Query)
Jde o oznaˇcen´ı pro skupinu rozˇs´ıˇren´ı .NET Frameworku. Toto rozˇs´ıˇren´ı je oznaˇcov´ano za revoluˇcn´ı v pˇr´ıstupu k dat˚ um, a to jak´ ymkoli. LINQ bylo uvedeno spolu s .NET Frameworkem 3.5. Data jsou v dneˇsn´ı dobˇe souˇc´ast´ı t´emˇeˇr kaˇzd´e aplikace. .NET umoˇzn ˇoval jiˇz od poˇca´tku pr´aci s relaˇcn´ımi(pravo´ uhl´e uspoˇr´ad´an´ı dat-ˇra´dky, sloupce) nebo hierchack´ ymi(je zde nˇejak´a struktura uloˇzen´ ych dat, napˇr. strom) daty nˇekolika zp˚ usoby zastˇreˇsen´ ymi obsaˇzen´ ymi v ADO.NET([2]). Narozd´ıl od tˇechto zp˚ usob˚ u pˇrin´aˇs´ı LINQ podporu dotazov´an´ı pˇr´ımo v jazyce .NET(C], VB). Tento pˇr´ım´ y pˇr´ıstup pˇrin´aˇs´ı nˇekolik v´ yhod, kde asi nejvˇetˇs´ı je dotazov´an´ı pomoc´ı kl´ıˇcov´ ych slov(query words) podobn´ ych SQL syntaxi. Nesporn´a v´ yhoda je kontrola k´odu pˇri kompilaci programu, vˇetˇsina chyb je odhalena jiˇz v t´eto f´azi. LINQ je moˇzn´e pouˇz´ıt na t´emˇeˇr jak´akoli data. Podstata LINQ je podobn´a ADO.NET, kde vytvoˇr´ıme provider pro urˇcit´ y typ datab´aze. LINQ nen´ı omezeno pouze na relaˇcn´ı datab´aze, d´ıky novince v .NET, Expression Trees(data jsou ukl´ad´ana do stromov´e struktury). Ty umoˇzn ˇuj´ı pr´aci s k´odem jako s daty, proto m˚ uˇze b´ yt LINQ dotaz pˇreloˇzen providerem pro urˇcit´ y datov´ y zdroj a nez´aleˇz´ı na typu dat. LINQ m´a nˇekolik skupin(implementac´ı): • LINQ to Object-stadartn´ı kolekce z pamˇeti • LINQ to SQL-Microsoft SQL Server typy
KAPITOLA 3. SILVERLIGHT
22
• LINQ to XML-pr´ace s XML daty • LINQ to DataSet-pr´ace s ADO.NET datasety Asi nejv´ıce pouˇz´ıvanou implementac´ı je LINQ to SQL, ta umoˇzn ˇuje dotazov´an´ı nad relaˇcn´ımi datab´azemi. LINQ to SQL umoˇzn ˇuje i modifikaci dat v datab´azi, t´ım dost´av´ame velmi siln´ y n´astroj pro pr´aci s nimi. V n´asleduj´ıc´ı uk´azce provedeme LINQ dotaz nad dvˇema kolekcemi. Je zde vidˇet zp˚ usob dotazov´an´ı a kl´ıˇcov´a slova podobn´a tˇem pouˇz´ıvan´ ym v SQL jazyce. using System.Limq; ... System.Collections.ObjectModel.ObservableCollection
listOfTeachers; System.Collections.ObjectModel.ObservableCollection listOfLocations; ... var teachers = (from teacher in listOfTeachers join location in listOfLocations on teacher.idLocation equals location.idLocation select new { location , teacher
}).ToList();
Syntaxe se opravdu velmi podob´a SQL dotazu. Liˇs´ı pouze um´ıstˇen´ım klauzule from a select. Zat´ımco v SQL je select na zaˇc´atku dotazu u LINQ je na konci. Dotaz zaˇc´ın´a kl´ıˇcov´ ym slovem from. D´ıky t´eto obmˇenˇe n´am je intellisense ve VS 2008 schopen napov´ıdat, protoˇze je hned zn´amo, jak´eho typu je datov´ y zdroj. V´ıce informac´ı o LINQ lze z´ıskat napˇr´ıklad na ofici´aln´ım webu microsoftu [2] nebo [10].
3.7
Struktura Silverlightu
Spolu se Silverlightem pˇrich´az´ı i nov´a pˇr´ıpona ∗.XAP[zap]. Jde o komprimovan´ y soubor obsahuj´ıc´ı vˇsechny soubory potˇrebn´e ke spr´avn´emu bˇehu Silverlight aplikace. Ke kompresi ∗.xap se pouˇz´ıv´a zip komprese. Soubor se vytvoˇr´ı pˇri kompilaci projektu, je uloˇzen v adres´aˇri Client-Bin(obr.4.9) a jmenuje se stejnˇe jako projekt(aplikace), ke kter´emu patˇr´ı. Pˇrep´ıˇseme-li pˇr´ıponu xap na zip, je moˇzn´e nahl´ednout do obsahu ∗.xap souboru(viz. obr.3.8). Obsahuje soubor application manifest (AppManifest.xaml), DLL knihovny nezbytn´e pro bezprobl´emov´ y bˇeh a bezpeˇcnostn´ı soubory(4.2.3). Prvn´ı dll knihovnou je zkompilon´a verze aplikace se stejn´ ym n´azvem.
KAPITOLA 3. SILVERLIGHT
23
Obr´azek 3.8: Obsah souboru XAP odpov´ıdaj´ıc´ı aplikaci s n´azvem DiplomaThesis
Soubor AppManifest.xaml obsahuje popis aplikace pro spuˇstˇen´ı v doplˇ nku Silverlight. Soubor je aktualizov´an pˇri kompilaci aplikace, na z´akladˇe referenˇcn´ı assembly je pˇripojen soubor AppManifest. Pˇrikl´adan´e soubory se daj´ı spravovat, pro assembly, kterou nechceme zahrnout do ∗.xap, nastav´ıme vlastnost ”Copy Local”na false. Pakliˇze nezahrneme assembly do ∗.xap, jej´ı staˇzen´ı bude vyˇza´d´ano pˇri jej´ım v´ yskytu v k´odu. Toto je uˇziteˇcn´e z hlediska velikosti stahovan´eho souboru, obsahuje pouze nezbytn´e assemblies a ty, co jsou pouˇzity v k´odu, jsou staˇzeny aˇz kdyˇz jsou potˇreba. Mechanismus je velkmi uˇziteˇcn´ y pouˇz´ıv´a-li urˇcitou assembly pouze ˇc´ast aplikace. Pˇr´ıklad souboru AppManifest.xaml je n´ıˇze.
Obsahuje tag , kter´ y definuje aplikaci a obsahuje dalˇs´ı vnoˇren´e tagy. Atribut EntryPointAssembly definuje kter´e assembly, z n´ıˇze definovan´ ych( n´od), je hlavn´ı dll knihovnou aplikace. EntryPointType atribute specifikuje tˇr´ıdu z dll
KAPITOLA 3. SILVERLIGHT
24
knihovny(assembly), definovan´e v EntryPointAssembly atributu, kter´a je hlavn´ı tˇr´ıdou pro start aplikace. n´od m´a atribut definuj´ıc´ı verzi Silverlightu ve kter´e je aplikace naps´ana. Jak je vidˇet, n´ody definuj´ı assembly(dll knihovny) pouˇzit´e v ∗.xap souboru a kaˇzd´e knihovnˇe pˇridˇeluj´ı jm´eno. Tento ∗.xap soubor je staˇzen prohl´ıˇzeˇcem, pˇreloˇzen z´asuvn´ ym modulem a jeho obsah(Silverlight aplikace) zobrazen na str´ance.
Kapitola 4 Vytvoˇ ren´ı RIA aplikace RIA aplikaci m˚ uˇzeme vytvoˇrit pomoc´ı r˚ uzn´ ych technologi´ı. V t´eto pr´aci byl na tyto u ´ˇcely pouˇzit Silverlight. Proto n´asleduj´ıc´ı popis bude zamˇeˇren na Silverlight aplikaci.
4.1
Tvorba Silverlight aplikace
Rozhodneme-li se naprogramovat Silvelight aplikaci mus´ıme m´ıt k dispozici p´ar nezbytn´ ych vˇec´ı. Jako prvn´ı je prostˇred´ı, kde bychom vlastn´ı k´od implementovali. Takov´ ym v´ yvojov´ ym prostˇred´ım je napˇr´ıklad Microsoft Visual studio(VS). Pro Silverlight ta nejnovˇejˇs´ı verze VS 2008. T´ım dost´av´ame komplexn´ı n´astroj pro tvorbu vˇsech druh˚ u aplikac´ı dostupn´ ych v .NET. VS je n´astroj urˇcen´ y hlavnˇe pro v´ yvoj´aˇre, znaˇcnˇe ulehˇcuje pr´aci vˇecmi jako jsou intelisence, code snippes, atd... Protoˇze Silverlight aplikace jsou graficky velmi vyspˇel´e a tvorba grafiky(animace, vlastn´ı ˇsablony prvk˚ u, ...) je d˚ uleˇzit´a, Microsoft vyv´ yj´ı paralelnˇe n´astroje Expression. Jejich v´ yˇcet a v´ıce informac´ı o nich je na webu. D´ıky t´eto koncepci je tedy striktnˇe oddˇelena pr´ace grafik˚ u a v´ yvoj´aˇr˚ u. Pr´ace se st´av´a efektivnˇejˇs´ı. VS a Expression mezi sebou kooperuj´ı, zmˇen´ı-li se nˇeco v jednom prostˇred´ı, ve druh´em se pˇri otevˇren´ı projektu s provedenou zmˇenou automaticky provede refresh a zmˇena se zap´ıˇse. Instalac´ı Visual Studia 2008 jeˇstˇe nejsme schopni vyv´ıjet Silverlight aplikace. Mus´ıme doinstalovat updaty pro Silverlight. Ty jsou pops´any v literatuˇre [6]. Po doinstalaci veˇsker´eho potˇrebn´eho softwaru vybereme z nab´ıdky projekt˚ u VS ten s n´azvem Silverlight(vlevo) a ˇsablonu Silverlight Application, jak je vidˇet na obr.4.1.
25
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
26
Obr´azek 4.1: V´ ybˇer ˇsablony pro tvorbu Silverlight aplikace
Po vyplnˇen´ı vˇsech potˇrebn´ ych u ´daj˚ u a potvrzen´ı se dostaneme na v´ ybˇer druhu Silverlight aplikace. Na obr.4.2 je vidˇet dialogov´e okno, kde je na v´ ybˇer mezi SL aplikac´ı, kter´a je hostov´ana na ASP.NET str´ance (my pouˇz´ıv´ame tento typ obr.4.9) nebo tou, kde je Silvelight hostov´an na str´ance automaticky generovan´e. Tato aplikace pak neobsahuje ASP.NET ˇc´ast. Je sice moˇzn´e vytvoˇrit web, kter´ y je zaloˇzen´ y jen na Silverlightu, ale nen´ı pravdˇepodobn´e, ˇze by se nˇekdo touto cestou vydal. Skuteˇcnost, ˇze Silverlight je vlastnˇe jeˇstˇe v plenk´ach, tak´e to, ˇze nepodporuje podˇedˇen´e klienty (nepodporuje uˇzivatele Windows ME, Windows 2000 a Windows 98), oboj´ı dohromady to znamen´a, ˇze rozsah moˇzn´ ych implementac´ı nen´ı srovnateln´ y s obyˇcejn´ ym HTML. I pˇresto mnoh´e weby, kter´e pouˇz´ıvaj´ı Silverlight, jej nepouˇz´ıvaj´ı jiˇz jen k odliˇsen´ı a vyzdviˇzen´ı se od ostatn´ıch online konkurent˚ u, ale tak´e kv˚ uli moˇznosti vytvoˇrit t´emˇeˇr jakoukoli funkˇcnost. Web se st´av´a prostorem t´emˇeˇr bez mantinel˚ u.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
27
Obr´azek 4.2: Dialogov´e okno pro v´ ybˇer druhu Silverlight aplikace
Po potvrzen´ı se vytvoˇr´ı Silverlight projekt, kter´ y obsahuje z´akladn´ı sloˇzky a vypad´a podle toho, jak´ y druh jsme zvolili.
4.2
Nastaven´ı komunikace s datab´ az´ı
V Silverlightu je moˇzn´e ke komunikaci s datab´az´ı pouˇz´ıt webov´e sluˇzby. Protoˇze pracujeme v Silverlightu m˚ uˇzeme pouˇz´ıt speci´aln´ı template, obsaˇzen ve Visual Studiu, jm´enem Silverlight-WCF enabled WebService, kter´ y je pops´an v 3.5.1. Spolu s webov´ ymi sluˇzbami nuj´ıc´ı pr´aci s daty. Proces pˇripojen´ı je pˇr´ıhodn´e pouˇz´ıvat technologii LINQ(kap.3.6), usnadˇ aplikace k datab´azi je pops´an v n´asleduj´ıc´ım textu. M´ame datab´azi vytvoˇrenou v Microsoft SQL Server jm´enem DPDatabase. Tuto datab´azi pˇripoj´ıme k naˇs´ı aplikaci tak abychom mohli s daty pracovat pomoc´ı LINQ. K tomu pouˇzijeme ˇsablonu VS jm´enem LinqToSql class, kterou pˇrid´ame do projektu.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
28
Obr´azek 4.3: Tvorba tˇr´ıdy Linq to Sql
Po pˇripojen´ı LinqToSql tˇr´ıdy k projektu(jm´eno.dmbl) se soubor pˇrid´a do z´aloˇzky AppCode ve webov´e ˇca´sti projektu(obr.4.9). Metodou drag and drop pˇrid´av´ame tabulky datab´az´ı zobrazen´ ych v Server Exploreru do DataClass, jak je vidˇet na obr.4.4.
Obr´azek 4.4: Pˇrid´ av´ an´ı prvk˚ u do Linq tˇr´ıdy
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
29
Pˇrid´an´ım tabulek se vytvoˇr´ı spojen´ı s datab´az´ı. Spojen´ı s datab´az´ı je deklarov´ano connectionStringem, coˇz je, uˇz podle n´azvu, ˇretˇezec spojen´ı. Tvar connection stringu se liˇs´ı od typu Datab´azov´eho serveru. V SQL Server 2008 m´a ConnectionString DPDatabese datab´aze n´asleduj´ıc´ı tvar a je obsaˇzen v souboru Web.config(obr.4.2.1). ...
Nesm´ıme zapomenout nastavit vlastnost tˇr´ıdy Serialization mode z None na Unidirectional, protoˇze pro pr´aci tˇr´ıdy se sluˇzbou je tˇreba aby byla serializovateln´a. Vytvoˇrili jsme poskytovatele dat. Ten bude v budoucnu poskytovat data sluˇzbˇe (kap.4.2.2). Tedy
pro komunikaci s datab´az´ı vytvoˇr´ıme webovou sluˇzbu, kter´a bude k dat˚ um pˇristupovat pˇrostˇrednictv´ım tˇr´ıdy LinqToSql. Vˇse, webovou sluˇzbu, LinqToSql tˇr´ıdu um´ıst´ıme na stejn´ y server. Nastav´ıme contract sluˇzbˇe a skrz ni potom m˚ uˇzeme pouˇz´ıvat data zahrnut´a v LinqToSql tˇr´ıdˇe.
4.2.1
Web.config
Tak jako maj´ı napˇr´ıklad Windows uloˇzena sv´a nastaven´ı v registrech, m´a sv´a nastaven´ı uloˇzena i webov´a .NET aplikace. Soubor Web.config je konfiguraˇcn´ı soubor ASP.NET aplikac´ı. Protoˇze jsme zvolili Silverlight projekt hostovan´ y na ASP.NET str´ance(obr.4.2), jmenuje se konfiguraˇcn´ı soubor aplikace Web.config. Ostatn´ı .NET aplikace maj´ı konfiguraˇcn´ı souboru pojmenov´any podle jm´ena aplikace jm´enoAplikace.config. Soubor ∗.config je ps´an v XML, rozdˇelen na nˇekolik ˇca´st´ı(appSettings, connectionStrings, ...). Konfiguraˇcn´ı soubor je pˇriloˇzen k aplikaci a m˚ uˇzeme jej mˇenit(nastavov´an´ı connectionString˚ u, ...). Za zm´ınku jeˇstˇe stoj´ı, ˇze kaˇzd´a ASP.NET aplikace dˇed´ı z´akladn´ı Web.config soubor od web.config souboru stroje (ten je uloˇzen root \ \M icrosof t.N et \ F ramework \ v ∗ . ∗ . ∗ . ∗ \CON F IG). Z´akladn´ı stavba, souboru web.config je vidˇet v n´asleduj´ıc´ı uk´azce.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
30
<system.web> <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm"/> <error statusCode="404" redirect="FileNotFound.htm"/>
V t´eto f´azi m´ame pˇripraveny data. Nyn´ı m˚ uˇzeme vytvoˇrit sluˇzbu na spojen´ı s datab´az´ı.
4.2.2
Pˇ ripojen´ı webov´ e sluˇ zby
Jak uˇz zde nˇekolikr´at bylo ˇreˇceno ve Visual Studiu je pro Silverlight speci´aln´ı webov´a sluˇzba. Nejedn´a se o ˇza´dnou novinku ve smyslu nov´e sluˇzby, n´ ybrˇz jenom o ˇsablonu upravenou na m´ıru Silverlightu. Ve verzi Silverlightu Beta 1 jsme jako WCF sluˇzbu byli nuceni pouˇz´ıvat WCF Service, jak je vidˇet na obr.4.3 tato sluˇzba(resp. ˇsablona) z˚ ustala v nab´ıdce VS. Pro to, aby sluˇzba v naˇs´ı aplikaci pracovala tak jak si pˇredstavujeme, je potˇreba nˇekolik mal´ ych u ´prav. Tyto u ´pravy se t´ ykaj´ı bindingu(kap.3.5.1). Souˇca´sn´a verze Silverlightu podporuje v´ yhradnˇe jeden typ bindingu a to basicHttpBinding. Proto je tˇreba zmˇenit poloˇzku binding, u WCF sluˇzby, v souboru web.config z wsHttpBinding na basicHttpBinding. Potom bychom nemˇeli zapomenout ani na vz´ajemnou kompatibilitu ASP.NET a prvk˚ u pouˇzit´ ych ve webov´e sluˇzbˇe. Za t´ımto u ´ˇcelem se pˇripojuj´ı nˇekter´e dslˇs´ı atributy do Web.config. Abychom nemuseli tyto vˇeci dopisovat a neust´ale je hl´ıdat, byla vytvoˇrena pr´avˇe Silverlight-WCF enabled Web service. Jde tedy jenom o dalˇs´ı ulehˇcen´ı pr´ace program´ator˚ u. Samozˇrejmˇe lze pouˇz´ıt jakoukoli jinou sluˇzbu, jen je tˇreba db´at na jiˇz zm´ınˇen´e, nezbytn´e, u ´pravy.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
31
Sluˇzba(Silverlight-WCF enabled Web Service) se skl´ad´a ze dvou soubor˚ u. Jeden n´azevSluˇzby.svc a druh´ y n´azevSluˇzby.cs(pro k´od psan´ y v C]). Soubor s pˇr´ıponou svc popisuje sluˇzbu. Specifikuje jazyk, ve kter´em budou ps´any metody(podle jazyka se odv´ıj´ı pˇr´ıpona souboru s k´odem sluˇzby ∗.cs, ∗.vb ), cestu k souboru s tˇemito metodami(metadata), n´azev. Jde obvykle o jeden ˇra´dek, pˇr´ıklad obsahu takov´eho souboru je vidˇet v n´asleduj´ıc´ım textu. V tomto pˇr´ıpadˇe je n´azevSluˇzby ekvivalentn´ı s MainService. <%@ ServiceHost Language="C#" Debug="true" Service="MainService" CodeBehind="~/App_Code/MainService.cs" %>
Soubor s pˇr´ıponou cs obsahuje metody sluˇzby, tedy obsah, funkˇcnost metody. Z obsahu ∗.svc je d´ale zˇrejm´e, ˇze soubor ∗.cs je v aplikaci um´ıstˇen ve sloˇzce AppCode(obr.4.9). Na obr.4.5 je obsah souboru MainService.cs. Metody jsou zde uvozeny atributem [OperationContract]. Atribut [OperationContract] se vkl´ad´a kv˚ uli lepˇs´ı kontrole generace WSDL. Nejˇcastˇeji z˚ ust´av´a atribut tak, jak jej je vidˇet na obr.4.5, ale napˇr´ıklad pro obousmˇern´e zp´avy(duplex messages) je tˇreba nˇejak´ ym zp˚ usobem deklarovat nˇekter´e specifikuj´ıc´ı(doplˇ nuj´ıc´ı) vlastnosti. Co je moˇzn´e v OperationContract definovat najdete v [2]. Jinak je pr´ace v k´odu v pozad´ı WCF sluˇzby velmi podobn´a praci v klasick´e tˇr´ıdˇe, tedy, ˇr´ık´ame sluˇzbˇe co m´a dˇelat. Sluˇzba MainService obstar´av´a komunikaci s datb´az´ı DPDatabase. Na obr.4.5 je uvedena pouze jej´ı mal´a ˇca´st(jedna metoda). Tato metoda vrac´ı tabulku Teacher z DPDatabase obsaˇzenou v DataClass(viz.obr.4.4) provideru.
Obr´azek 4.5: Soubor s k´odem sluˇzby
Vytvoˇr´ıme-li sluˇzbu zb´ yv´a ji pˇripojit k aplikaci. Stiskem prav´eho tlaˇc´ıtka, nad poloˇzkou References, je vyvol´ano kontextov´e menu v jehoˇz nab´ıdce vybereme Add Service Refences. Otevˇre se dialogov´e okno obr.4.6.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
32
Obr´azek 4.6: Dialogov´e okno pˇripojen´ı reference na sluˇzbu
Z nab´ıdky sluˇzeb vybereme tu, kterou chceme pˇripojit, pojmenujeme pˇripojovanou referenci. Dialogov´e okno na obr.4.6 je rozdˇeleno na dvˇe ˇca´sti, Services a Operations. Operations jsou metody pouˇzit´e ve sluˇzbˇe, vybran´e v ˇc´asti Services. Po pˇrid´an´ı sluˇzby k projektu(pˇres referenci) je vygenerov´an soubor ServiceReferences.ClientConfig. Tento soubor obsahuje nˇekter´e konfiguraˇcn´ı informace. Ve verzi Silverlightu Beta 1 byl vytvoˇren, ale uˇz ne pouˇzit. V Silverlightu 2 je soubor vygenerov´an, pˇripojen k XAP(obr.3.8) a pouˇz´ıv´an jako podmnoˇzina WCF konfigurace. Obsah je v XML jazyce. Pˇr´ıklad obsahu je na obr.4.7. Je zde vidˇet popis sluˇzby, tedy druh bindingu a endpoint. Druh bindingu specifikuje protokol pouˇz´ıvan´ y urˇcit´ ym endpointem. EndPoint je to jak je sluˇzba pˇredkl´ad´ana, aby klient mohl vyvolat operace definovan´e v contractu.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
33
Obr´azek 4.7: Obsah ServiceReferences.ClientConfig souboru
Pokud udˇel´ame nˇejakou zmˇenu ve sluˇzbˇe a pak obnov´ıme referenci na tuto sluˇzbu, zmˇeny se automaticky prom´ıtnou i do souboru ServiceReferences.ClientConfig. Pot´ıˇze kter´e se vyskytli bˇehem implementace jsou pops´any v kapitole 6. Pokud ˇza´dn´e pot´ıˇze nenastaly m˚ uˇzeme sluˇzbu zaˇc´ıt pouˇz´ıvat v aplikaci(kap.4.4).
4.2.3
Cross-Domain access policy
V´ yˇse popsan´ y postup pˇripojen´ı sluˇzby, bude fungovat pokud je sluˇzba um´ıstˇena na stejn´em serveru jako aplikace(kter´a sluˇzbu pouˇz´ıv´a). To vˇsak nen´ı ve vˇetˇsinˇe pˇr´ıpad˚ u pravda, proto je tˇreba doplnit aplikaci o soubor, kter´ y umoˇzn´ı pracovat se sluˇzbou um´ıstˇenou na jin´e dom´enˇe(cross-domain acces). Silverlight podporuje dva r˚ uzn´e zp˚ usoby umoˇznˇen´ı pˇr´ıstupu cross-domain. • Vytvoˇrit soubor clientaccesspolicy.xml a pˇridat jej na ”p´ateˇr”dom´eny, kde je hostov´ana webov´a sluˇzba. Ten nastav´ı sluˇzbu tak, aby bylo moˇzn´e pouˇz´ıvat crossdomain pˇr´ıstup. • Vytvoˇrit soubor crossdomain.xml a pˇridat jej na ”p´ateˇr”dom´eny, kde je hostov´ana webov´a sluˇzba. Form´at tohoto souboru je podporov´an i Adobe Flashem. Jsou to dvˇe zd´anlivˇe stejn´a ˇreˇsen´ı, a proto vyvst´av´a ot´azka, kterou z tˇechto dvou moˇznost´ı pouˇz´ıt. Aˇckoli crossdomain.xml pouˇz´ıv´a i Adobe Flash, je zde omezen´ı pro Silverlight. Aby byla sluˇzba pˇr´ıstupn´a mus´ı b´ yt crossdomain.xml nastaven tak, ˇze webov´a sluˇzba je zpˇr´ıstupnˇena z jak´ekoli dom´eny. Nen´ı-li soubor nastaven takto, Silverlight sluˇzbu nerozezn´a.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
34
Druh´a moˇznost je opozn´an´ı flexibilnˇejˇs´ı. Soubor clientaccesspolicy.xml umoˇzn ˇuje specifikaci dom´en, kter´e maj´ı pˇr´ıstup ke sluˇzbˇe. V uk´azce obsahu clientaccesspolicy.xml je umoˇznˇen pˇr´ıstup pouze na vol´an´ı z adresy http://myApp.com. <policy> <domain uri="http://myApp.com"/>
Kdyˇz pouˇzijete oba soubory(um´ıst´ıte je na ”koˇren”dom´eny), klientsk´a Silverlight aplikace zkontroluje nejprve clientaccesspolicy.xml, nastav´ı omezen´ı na urˇcit´e dom´eny. Nez´aleˇz´ı na obsahu crossdomain.xml (ten bude pouˇzit kliensk´ ymi aplikacemi FLASHe). Nejlepˇs´ı odpovˇed´ı na ot´azku kt´er´ y zp˚ usob pouˇz´ıt, je asi oba dva. Co je tˇreba m´ıt neust´ale na pamˇeti je ukl´ad´an´ı tˇechto dvou soubor˚ u(clientaccesspolicy.xml, crossdomain.xml ). Mus´ı b´ yt uloˇzeny na koˇren dom´eny, ve kter´e je sluˇzba hostov´ana. Napˇr´ıklad pokud je sluˇzba na http://localhost:7363/SilverlightApplication3Web/ potom pˇr´ıstupov´e soubory mus´ı b´ yt um´ıstˇeny na adrese http://localhost:7363/SilverlightApplication3Web/crossdomain.xml.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
35
Obr´azek 4.8: Pr˚ ubˇeh z´ısk´ av´ an´ı pˇr´ıstupov´ ych informac´ı (pˇrevzato z [13])
V obr´azku 4.8 se vyskytuje pojem WebClient. WebClient je tˇr´ıda .NETu, obsahuj´ıc´ı metody pro pos´ıl´an´ı a pˇrij´ım´an´ı dat ze zdroje identifikovan´eho urˇcit´ ym URI.
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
4.3
36
Pˇ rid´ an´ı Silverlight aplikace na ASP.NET str´ anku
Obr´azek 4.9: Solution explorer Silverlight aplikace
Na obr´azku 4.9 je vidˇet pˇr´ıklad obsahu Silverlight aplikace(Solution explorer ve VS2008). Jde o jedno ˇreˇsen´ı(solution) obsahuj´ıc´ı dva projekty. Jak jsme zmiˇ novali v kapitole 4.1 SL projekty se obvykle vytv´aˇr´ı spojen´e s ASP.NET str´ankami, kter´e SL aplikaci zapouzdˇruj´ı. Na obr´azku jsou vidˇet dvˇe ˇc´asti. ASP.NET a Silverlight ˇc´ast. ASP.NET str´anka m´a tˇri potencion´aln´ı vstupn´ı kan´aly pro Silverlight. Jsou to • Default.aspx • DiplomaThesisTestPage.aspx • DiplomaThesisTestPage.html. Pro pˇripojen´ı SL do ASP.NET str´anky jsou nezbytn´e dva tagy. Prvn´ı je . Druh´ ym je AJAX (), tak jak je vidˇet n´ıˇze
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
37
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %> <%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls" TagPrefix="asp" %>
Text v´ıˇse ukazuje zp˚ usob pˇripojen´ı SL aplikace do webov´e str´anky.
4.4
Vol´ an´ı sluˇ zby v k´ odu
Kv˚ uli nejist´e dobˇe odezvy serveru jsou vˇsechny sluˇzby v Silverlightu 2 vol´any asynchronnˇe. Z´ısk´av´an´ı dat je pak operace o dvou kroc´ıch. Prvn´ım je nastaven´ı event handleru, kter´ y bude zavol´an kdyˇz je sluˇzba dokonˇcena. Druhou operac´ı je zavol´an´ı asynchronn´ı metody sluˇzby.
Obr´azek 4.10: Vol´ an´ı sluˇzby v k´odu
Asynchonn´ı vol´an´ı sluˇzeb v Silverlightu je velmi kontroverzn´ı, obˇcas zp˚ usobuj´ıc´ı memal´e probl´emy(program´ator nev´ı kdy pˇrijde odpovˇed’). Proto je moˇzn´e, ˇze to bude jedna z
ˇ ´I RIA APLIKACE KAPITOLA 4. VYTVOREN
38
vˇec´ı kter´e se v budoucnu zmˇen´ı. At’ je asynchronn´ı pˇr´ıstup jakkoli nepopul´arn´ı, je nejrozˇs´ıˇrenˇejˇs´ı a je podporov´an ˇsirok´ ym spektrem prohl´ıˇzeˇc˚ u a operaˇcn´ıch syst´em˚ u. Tak´e pom´ah´a pˇri kontrole dostupnosti vl´akna obsluhuj´ıc´ıho uˇzivatelsk´e rozhran´ı(UI).UI vl´akna se staraj´ı o pˇrekreslov´an´ı obsahu oken tab.3.2). Abychom pˇridali jeˇstˇe nˇejak´a pozitiva, jakmile je pouˇzita sluˇzba s asynchronn´ım vol´an´ım, k´od pro jej´ı vol´an´ı je ˇcist´ y, lehce ˇciteln´ y. Event handler m´a event args, kter´e zahrnuj´ı i n´avratovou hodnotu(pokud metoda sluˇzby nˇeco vrac´ı) e.Result viz.obr.4.10.
4.5
Pr´ ace s daty
Data, z´ıskan´a z datab´aze pomoc´ı webov´e sluˇzby, jsme uloˇzili podle obr.4.10 do promˇenn´e teacherIn. Dejme tomu, ˇze nyn´ı budeme cht´ıt vybrat vˇsechny uˇcitele, kteˇr´ı maj´ı kˇrestn´ı jm´eno zaˇc´ınaj´ıc´ı na I. Protoˇze jsme pouˇzili LINQ class, m˚ uˇzeme se dotazovat jazykem LINQ. Podle kap.3.6 m˚ uˇzeme napsat dotaz: var teacherI = from i in teacherIn select i.FirstName.StartsWith("I");
Jednoduch´ ym z´apisem jsme dostali seznam uˇcitel˚ u, jejichˇz kˇrestn´ı jm´ena zaˇc´ınaj´ı na I. Stejn´ ym zp˚ usobem prov´ad´ıme dotazy nad veˇsker´ ymi tabulkami obsaˇzen´ ymi v DataClass.dbml souboru. Typ var, pouˇz´ıvan´ y k implicitn´ı definici promˇenn´ ych, je v tomto pˇr´ıpadˇe pouˇzit kv˚ uli anonymitˇe v´ ysledku z´ıskan´eho z dotazu. V pˇr´ıkladu v´ yˇse je v´ ysledkem jeden sloupec(FirstName) string˚ u(pole string˚ u) zaˇc´ınaj´ıc´ıch na I. Tedy zde nen´ı u ´plnˇe nutn´ y typ var, protoˇze typ, z´ıskan´ y v dotazu, je zn´am´ y. M˚ uˇze se vˇsak zmˇenit m´alo a r´azem je uplnˇe jin´ y n´avr´atov´ y typ. var teacherI = from i in teacherIn select new{i.firstName, i.lastName};
Nyn´ı je promˇenn´a teacherI anonymn´ıho typu a typ var je zde nezbytn´ y. K implicitn´ı deklaraci nen´ı var moc vyuˇz´ıv´an, protoˇze takov´eto pouˇzit´ı vn´aˇs´ı do k´odu znaˇcn´ y zmatek. V´ıce o t´ematice pr´ace s daty v Silverlightu naleznete napˇr´ıklad zde [2],[10].
Kapitola 5 Popis programu pro tvorbu rozvrhu Jedn´ım z u ´kol˚ u pr´ace je vytvoˇrit SL aplikaci pro tvorbu rozvrhu ˇskoly. Na t´eto aplikaci byla vyzkouˇsena vˇetˇsina vlastnost´ı a moˇznost´ı Silverlightu. V´ ysledkem je aplikace popsan´a v kap.5.3. Jak je zn´amo tvorba ˇskoln´ıho rozvrhu nen´ı jednoduch´a vˇec.Vyuˇz´ıt Silverlightu k ˇreˇsen´ı takov´eho probl´emu je zaj´ımav´a alternativa. Byl zvolen protoˇze jde o smˇer kter´ ym se ub´ıraj´ı modern´ı aplikace. Tedy jsou pˇr´ıstupn´e na internetu, k jejich spr´avn´e funkci je potˇreba jednoduch´ y plug-in. Jsou podporov´any velk´ ym mnoˇzstv´ım prohl´ıˇzeˇc˚ u, ale hlavnˇe poskytuj´ı funkˇcnost a moˇznosti podobaj´ıc´ı se desktopov´ ym aplikac´ım.
5.1
Struˇ cn´ y popis
Co to znamen´a vlastnˇe tvorba rozvrhu? Je to pˇridˇelov´an´ı vlastnost´ı(uˇc´ı kdy, uˇc´ı se kde) jednotliv´ ym entit´am(uˇcitel, pˇredmˇet), z´aroveˇ n hl´ıd´an´ı koliz´ı podle pravidel vych´azej´ıc´ıch z koncepce rozvrhu ˇskoly(uˇcitel nem˚ uˇze uˇcit z´aroveˇ n dva pˇredmˇety, atd...). Tedy pil´ıˇrem je datab´aze, nad kterou postavime aplikaci. Co by mˇel takov´ y syst´em umoˇzn ˇovat? Urˇcitˇe vkl´ad´an´ı jednotliv´ ych entit(uˇcitel˚ u, pˇredmˇet˚ u), jejich maz´an´ı, urˇcit m´a b´ yt co uˇceno, ... Tyto moˇznosti obstar´avaj´ı jednotliv´e Silverlight User Controls(je to jedna Silvelright ”str´anka”) kap.5.2.2. Hlavn´ı funkce aplikace jsou zn´arornˇeny v blokov´em sch´ematu.
39
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
40
Obr´azek 5.1: Blokov´e sch´ema aplikace
5.1.1
Datab´ aze
Dobr´ y n´avrh strukturovan´e relaˇcn´ı datab´aze je sloˇzit´ y. Pˇri n´avrhu se prov´ad´ı datov´a anal´ yza, kter´a se skl´ad´a z nˇekolika f´az´ı. V jejich pr˚ ubˇehu se postupnˇe vytv´aˇr´ı st´ale konkr´etnˇejˇs´ı sch´emata, kter´a zn´azorˇ nuj´ı poˇzadovan´a data. V prvn´ı f´azi se prostˇrednictv´ım konzultac´ı s uˇzivateli a zadavateli syst´emu formuluj´ı a shromaˇzd’uj´ı pˇresn´e poˇzadavky na to, co vˇse m´a b´ yt v datab´azi uloˇzeno. Z takto z´ıskan´ ych informac´ı je vytvoˇren konceptu´aln´ı model. Konceptu´aln´ı datov´ y model popisuje data v datab´azi na abstraktn´ı u ´rovni nez´avisle na fyzick´em uloˇzen´ı. V´ ysledkem je konceptu´aln´ı model zn´azornˇen´ y jako sch´ema nebo diagram, kter´ y co nejv´ ystiˇznˇeji zachycuje pohled ˇclovˇeka na danou ˇc´ast re´aln´eho svˇeta. Nejzn´amˇejˇs´ım konceptu´aln´ım datov´ ym modelem je ER(entity relationship) model. ER model k n´avrhu datab´aze byl pouˇzit i v tomto pˇr´ıpadˇe(obr.5.2).
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
41
Obr´azek 5.2: ER model datab´aze
MS Sql datab´aze navrˇzen´a podle modelu byla vytvoˇrena v Microsoft SQL Server 2008 Express. Struˇcn´ y popis jednotliv´ ych entit(tabulek) je uveden n´ıˇze. Vytvoˇren´a datab´aze se k Silverlight projektu pˇripoj´ı postupem popsan´ ym v kap.4.2. P´ar slov k funkci jednotliv´ ych tabulek • Room-m´ıstnosti ve kter´ ych se m˚ uˇze uˇcit • Group-skupina pˇredmˇet˚ u, jako je napˇr´ıklad povinn´e, povinnˇe voliteln´e, atd... • editTypeOfHour-typ hodiny, cviˇcen´ı, pˇredn´aˇska, ... ˇ ızen´ı • Location-um´ıstˇen´ı, atribut pro rozezn´av´an´ı, napˇr. Katedra R´ • editSubject-pˇredmˇety • Teacher-uˇcitel ˇ ıd´ıc´ı technika • Sphere-datab´aze obor˚ u, coˇz je napˇr´ıklad R´
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
42
ˇ ıd´ıc´ı • SubjectComposition-ˇr´ık´a, kde vˇsude se pˇredmˇet vyuˇcuje, napˇr´ıklad v oboru R´ technika v 2. semestru je jeden z pˇredmˇet˚ u typu S Matematika pro Kybernetiku a mˇeˇren´ı.
5.2
Tvorba GUI
Grafick´e uˇzivatelsk´e rozhran´ı, je nem´enˇe d˚ uleˇzitou ˇca´st´ı a jeho tvorba by nemˇela b´ yt podceˇ nov´ana. N´avrh GUI je samotn´ ym vˇedn´ım oborem a m´a sv´a pravidla a z´akonitosti (jednoduchost, pˇrehlednost, nevt´ırav´e, ...). Dobr´e uˇzivatelsk´e rozhran´ı je z´aklad u ´spˇeˇsn´e aplikace, protoˇze lid´e nebudou pouˇz´ıvat nˇeco co se pouˇz´ıv´a ˇspatnˇe, nepohodlnˇe nebo nestandartnˇe. GUI Silverlight aplikace je integrov´ano do ASP.NET str´anky (obr.5.3). Nen´ı dobr´e, ani v´ yhodn´e, vytv´aˇret webov´e str´anky zaloˇzen´e pouze na Silverlightu, protoˇze SL nepodporuje vˇeci jako jsou tlaˇc´ıtko zpˇet v prohl´ıˇzeˇci(stejnˇe jako AJAX, Flash), neodchyt´av´a ud´alosti myˇsi tak jak jsme zvykl´ı(kap.6.4), ... Proto pouˇzit´ı ASP.NET integrace.
Obr´azek 5.3: Vzhled GUI
Protoˇze n´avrh rozvrhu, ve smyslu jeho tvorby, je distribuovan´ y probl´em(uˇcitel nem˚ uˇze vytv´aˇret rozvrhy m´ıstnost´ı,...), je v aplikaci pouˇzit syst´em uˇzivatelsk´ ych rol´ı.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
5.2.1
43
Administrace rol´ı
Pouˇz´ıv´an´ı uˇzivatelsk´ ych rol´ı v Silverlight aplikac´ıch(pokud je hostov´ana v ASP.NET str´ance) znamen´a nastaven´ı ASP.NET N´astroje pro spr´avu webu obr.5.4. Ten najdeme ve Visual Studiu nab´ıdce Website > ASP.NET Configuration.
Obr´azek 5.4: ASP.NET n´astroj pro spr´avu webu
Zde v poloˇzce Zapezpeˇcen´ı nastav´ıme umoˇznˇen´ı rol´ı. Vytvoˇr´ıme uˇzivatele a zaˇrad´ıme je do rol´ı. Pro zpˇr´ıstupnˇen´ı ASP.NET Authentication syst´emu v Silverlightu, pˇripoj´ıme WCF sluˇzbu([2]). ASP.NET Authentication je proces z´ısk´av´an´ı autorizaˇcn´ıch informac´ı uˇzivatel˚ u (pˇr´ıstup ano, ne). Tato sluˇzba bude pouze ukazovat na tu defaultn´ı, tedy tu poskytovanou pro ASP.NET. Proto nemus´ı m´ıt ˇza´dnou tˇr´ıdu s k´odem v pozad´ı. Vytvoˇr´ıme ji prost´ ym pˇrid´an´ım textov´eho souboru. Nazveme jej AuthenticationService.svc. obsahem bude jeden ˇra´dek <%@ ServiceHost Language="C#" Service="System.Web.ApplicationServices.AuthenticationService" %>,
ten prov´aˇze sluˇzbu s implementac´ı pouˇz´ıvanou v ASP.NET. Jak jsme zmiˇ novali nen´ı zde ˇza´dn´ y odkaz na soubor v pozad´ı. K nastaven´ı sluˇzby patˇr´ı jeˇstˇe doplnˇen´ı souboru Web.config o nˇekter´e tagy.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
44
<System.web> ... ...
<system.web.extensions> <scripting> <webServices> <system.serviceModel> <services> <service name="System.Web.ApplicationServices.AuthenticationService" behaviorConfiguration="AuthenticationServiceTypeBehaviors"> <endpoint contract="System.Web.ApplicationServices.AuthenticationService" binding="basicHttpBinding" bindingConfiguration="userHttp" bindingNamespace="http://asp.net/ApplicationServices/v200"/> <security mode="None"/> <serviceBehaviors> <serviceMetadata httpGetEnabled="true"/> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
Pˇripojen´ı reference na sluˇzbu je shodn´e s postupem popsan´ ym v kap.4.2.2. Pokud nastane chyba pˇri pˇripojov´an´ı je tˇreba znovu pˇrekontrolovat vˇsechny ˇca´sti nastaven´ı. Pˇripoj´ıme-li sluˇzbu k naˇs´ı aplikaci je moˇzn´e pouˇz´ıvat metody AuthenticationServicu. Jak´e to jsou se dozv´ıte napˇr´ıklad v [2]. Pro pr´aci s detaily uˇzivatele(spr´ava u ´ˇctu) je tˇreba pˇridat sluˇzbu s n´azvem ProfileService.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
45
Pˇrid´ame opˇet textov´ y soubor, pˇrejmenujeme jej na ProfileService.svc s obsahem <%@ ServiceHost Language="C#" Service="System.Web.ApplicationServices.ProfileService" %>.
Stejnˇe jako v pˇredchoz´ım pˇr´ıpadˇe, je ruˇcn´ı dops´an´ı nˇekter´ ych tag˚ u do Web.config nezbytn´e. ... <service name="System.Web.ApplicationServices.ProfileService" behaviorConfiguration="ProfileServiceTypeBehaviors"> <endpoint contract="System.Web.ApplicationServices.ProfileService" binding="basicHttpBinding" bindingConfiguration="userHttp" bindingNamespace="http://asp.net/ApplicationServices/v200"/> .... <serviceMetadata httpGetEnabled="true"/>
Um´ıst´ıme tagy na stejn´e m´ısto jako u pˇredchoz´ı sluˇzby. Posledn´ı sluˇzbou, potˇrebnou k plnohodnotn´e pr´aci s rolemi, je RoleService, neboli spr´ava rol´ı. Defaultnˇe nen´ı uˇzivatel zaˇrazen´ y do ˇza´dn´e role. Pˇrid´an´ım uˇzivatele do role, nebo v´ıce rol´ı dost´av´ame lepˇs´ı moˇznost administrovat aplikaci. Podle role, do kter´e uˇzivatel patˇr´ı, se k nˇemu aplikace ”chov´a”. Jak tedy pˇripojit sluˇzbu pro spr´avu rol´ı? Postup je analogick´ y. Tagy, pro tuto sluˇzbu, pˇrid´avan´e do Web.configu maj´ı takovouto podobu. .... <service behaviorConfiguration="AppServicesBehavior" name="System.Web.ApplicationServices.RoleService"> <endpoint binding="basicHttpBinding" bindingConfiguration="userHttp" bindingNamespace="http://asp.net/ApplicationServices/v200" contract="System.Web.ApplicationServices.RoleService" /> .... <serviceMetadata httpGetEnabled="true" /> ...
Obsah sluˇzby RoleService.svc je stejn´ y jako u pˇredeˇsl´ ych dvou. Liˇs´ı se pouze atributem Service=System.Web.ApplicationServices.RoleService. Jsou-li vˇsechny tˇri sluˇzby pˇripojeny, dost´av´ame moˇznost obsluhovat uˇzivatele, jejich role pˇres obsahy tˇechto sluˇzeb(jejich Contract). Standartn´ı moˇznost´ı, ve vˇetˇsinˇe aplikac´ı, u pˇrihlaˇsovac´ıch formul´aˇr˚ u, je moˇznost pamatov´an´ı si uˇzivatelsk´eho jm´ena, popˇr´ıpadˇe hesla. V Silverlightu m˚ uˇzeme tuto funkˇcnost zav´est d´ıky IsolatedStorage. IsolatedStorage by se dal pˇrirovnat ke Cookies zn´am´ ym z HTML. Toto izolovan´e u ´loˇziˇstˇe je jedin´e m´ısto kam m˚ uˇze Silverlight aplikace ukl´adat
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
46
vytvoˇren´e soubory. Soubory jsou oddˇelen´e podle uˇzivatele a webov´ ych str´anek ve kter´ ych byly uloˇzeny. Velikost u ´loˇziˇstˇe je omezena na 1M B. Jak takov´e u ´loˇziˇstˇe pouˇz´ıvat je vidˇet na obr.5.5.
Obr´azek 5.5: Pouˇzit´ı IsolatedStorage
Pˇrihlaˇsovac´ı str´anka, kter´a je tak´e tou uvodn´ı v aplikaci, vypad´a takto obr.5.6. Pokud jsou pˇrihlaˇsovac´ı u ´daje spr´avn´e, a uˇzivatel je zaˇrazen do nˇekter´e z rol´ı, naskytne se mu moˇznost vybrat si z nab´ıdky akc´ı, kter´e by chtˇel dˇelat. Nab´ıdka je na obr.5.7.
5.2.2
Navigace v Silverlightu
Navigac´ı rozum´ıme pˇrep´ın´an´ı mezi jednotliv´ ymi ˇca´stmi aplikace. Tyto ˇc´asti aplikace jsou reprezentov´any jednotliv´ ymi Silverlight User Controly. User Control je ˇsablona z nab´ıdky Visual Studia, kter´a pomoc´ı .NETu umoˇzn ˇuje tvorbu Silverlight aplikac´ı. Pak v´ ybˇer jak´ekoli poloˇzky z nab´ıdky znamen´a zavolat UserControl, kter´a se zobraz´ı na m´ıstˇe t´e st´av´aj´ıc´ı. V Silverlightu neexistuje nˇeco jako je odkaz ve smyslu pˇresmˇerov´an´ı na jinou HTML(aplikaˇcn´ı) str´anku, je nutn´e pouˇz´ıvat mechanismus pˇrid´av´an´ı a odtraˇ nov´an´ı jednotliv´ ych str´anek(UserControl). Jak jiˇz bylo ˇreˇceno, layout str´anky je deklarov´an v jazyce XAML. Potom kdyˇz vytvoˇr´ıme nov´ y Silverlight UserControl, napˇr´ıklad s n´azvem newControl s n´asleduj´ıc´ım obsahem.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
47
<UserControl x:Class="SilverlightApplication1.newControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="400" Height="300">
M´ame v projektu dvˇe UserControly(newControl a tu z obr.3.6 nazvanou SilverlightControl2). Nyn´ı je moˇzn´e zobrazit newControl na m´ıstˇe SilverlightControl2(pˇrepnout jejich zobrazen´ı). Tlaˇc´ıtko button1 v SilverlightControl2 obsluhuje ud´alost Click. Po kliknut´ı na nˇej je vyvol´ana metoda button1_Click. Tu obslouˇz´ı metoda obsaˇzen´a v k´odu v pozad´ı(pro C] soubor SilverlightControl2.cs). Pˇrepnut´ı mezi dvˇema UserControly je pops´ano v textu n´ıˇze. private void button1_Click(object sender, RoutedEventArgs e) { //vytvoreni instance tridy newControl newControl newcontrol = new newControl(); //pridani newcontrol na misto SilverlightControl2 this.LayoutRoot.Children.Add(newcontrol); }
Po kliknut´ı na tlaˇc´ıtko se tedy zobraz´ı obrazovka s n´apisem newControl uprostˇred. Zpˇet na p˚ uvodn´ı zobrazen´ı(to z 3.4.1) se dostaneme podobnˇe. M´ısto metody Add pouˇzijeme Remove s opaˇcn´ ymi parametry.
V t´eto f´azi m´ame obecn´ y pˇrehled o tom jak se tvoˇr´ı takov´e grafick´e rozhran´ı v Silverlightu. Hlavn´ım stavebn´ım kamenem je Silverlight UserControl(logick´ y prvek zapouzdˇruj´ıc´ı dalˇs´ı logick´e prvky). Tyto prvky provazujeme do sebe, t´ım vytv´aˇr´ıme aplikaci.
5.3 5.3.1
Vlastn´ı aplikace Editace dat
Popis vlastn´ı aplikace jsme tu jiˇz nast´ınili. Je zapouzdˇrena v ASP.NET str´ance (obr.5.3), pouˇz´ıv´a role pro pˇr´ıstup. Tedy pokud se u ´spˇeˇsnˇe zalogujeme viz.obr.5.6, jsme zaˇrazeni v nˇekter´e z rol´ı, zobraz´ı se n´am v´ ybˇer(menu) poloˇzek.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
48
Obr´azek 5.6: Uvodn´ı str´anka aplikace pro tvorbu rozvrhu
Asi tou nejoˇcek´avanˇejˇs´ı moˇznost´ı aplikace je editace jednotliv´ ych tabulek, ta je pod pol´ıˇckem menu Edit items(obr.5.7).
Obr´azek 5.7: Hlavn´ı menu aplikace
Pˇri potˇrebˇe vkl´ad´an´ı nebo umaz´an´ı st´avaj´ıch u ´daj˚ u(nedaj´ı se editovat, kv˚ uli n´asledn´e
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
49
zmˇenˇe mnoha u ´daj˚ u, tˇreba i poˇctu pˇredmˇet˚ u) zvol´ıme tabulku kterou chceme editovat. Tabulky vyb´ır´ame pomoc´ı tlaˇc´ıtek v horn´ı ˇca´sti dialogov´eho okna(viz.obr.5.8).
Obr´azek 5.8: Funkce odkazu View
Obsah tabuek je moˇzn´e filtrovat a ˇradit vzestupnˇe a sestupnˇe jednotliv´e sloupce. Pro pˇrid´an´ı nov´eho z´aznamu zvol´ıme Edit, vlevo dole.
Obr´azek 5.9: Pˇrid´ av´ an´ı nov´ ych z´aznam˚ u
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
50
T´ım se otevˇre dialogov´e okno pro vkl´ad´an´ı poloˇzek do tabulky. Vkl´ad´an´ı je bezpeˇcn´e. Aplikace nenech´a uˇzivatele vloˇzit neplatn´ y u ´daj(5.9). Pro vymaz´an´ı z´aznamu jej staˇc´ı vybrat v tabulce a stisknout kl´avesu Delete. Po obou akc´ıch(smaz´an´ı, pˇrid´an´ı z´aznamu) se tabulka a filtry obnov´ı podle aktu´aln´ı situace. Pro ruˇcn´ı obnovu dat v zobrazovan´ ych tabulk´ach slouˇz´ı tlaˇc´ıtko Refresh.
5.3.2
Rozvrh m´ıstnosti
Dalˇs´ı operac´ı je pˇriˇrazen´ı pˇredmˇetu do m´ıstnosti. Tedy tvorba rozvrhu m´ıstnostu. Tuto volbu umoˇzn ˇuje dialogov´e okno na obr.5.10.
Obr´azek 5.10: Pˇriˇrazen´ı pˇredmˇet˚ u m´ıstnostem
Dialogov´e okno vyvol´ame kliknut´ım na pˇr´ısluˇcnou poloˇzku menu, n´aslednˇe se na obrazovce objev´ı seznam m´ıstnost´ı, jednu z nich vybereme. Podle kapacity m´ıstnosti se n´am zobraz´ı jen ty pˇredmˇety, kter´e maj´ı poˇcet student˚ u menˇs´ı a patˇr´ı do stejn´e lokace jako vybran´a m´ıstnost. Pak dostaneme napˇr´ıklad takov´ y sc´en´aˇr jako je na obr.5.10. Ve vrchn´ı ˇca´sti je n´azev m´ıstnosti(KN09). V prostˇredn´ı ˇc´asti rozvrh t´eto m´ıstnosti s ˇcervenˇe zv´ yraznˇen´ ymi, jiˇz zapsan´ ymi pˇredmˇety. Ve spodn´ı ˇca´sti je seznam dostupn´ ych pˇredmˇet˚ u.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
51
Spodn´ı ˇc´ast zobrazuje pˇredmˇety ve tˇrech r˚ uzn´ ych stavech. Prvn´ı(zelen´ y) je pˇredmˇet jeˇstˇe nezaˇrazen´ y do ˇz´adn´e m´ıstnosti. Pˇredmˇet s ˇserven´ ym oznaˇcen´ım a moˇznost´ı editovat ˇcas a den v Combo boxech je um´ıstˇen v aktu´aln´ı m´ıstnosti(na obr.5.10 vprostˇred). Posledn´ım je ten pˇredmˇet, kter´ y sv´ ymi vlastnosti vyhovuje t´eto m´ıstnosti, ale jiˇz byl dˇr´ıve um´ıstˇen do jin´e. Zde nen´ı umoˇznˇena editace a barevn´ y pˇr´ıznak je takt´eˇz ˇcerven´ y. Pˇri najet´ı kurzorem myˇsi nad pˇredmˇet z jin´e m´ıstnosti se zobraz´ı jeho detaily(viz.obr.5.10). Pokud chceme pˇrepnout na editaci m´ıstnosti, ve kter´e je pˇredmˇet um´ıstˇen, staˇc´ı stlaˇcit tlaˇc´ıtko myˇsi kdekoli nad n´ım. K zapisov´an´ı pˇredmˇet˚ u do m´ıstnosti m´ame opˇet dvˇe moˇznosti. Prvn´ı je v´ ybˇer dne a ˇcasu kon´an´ı pˇredmˇetu pomoc´ı combobox˚ u a potrzen´ı tlaˇc´ıtkem confirm. Druhou alternativou je metoda drag and drop. ”Chytneme”pˇredmˇet(jeho zelen´ y n´azev) a pˇret´ahneme jej nad kolonku rozvrhu. I na zmˇenu doby v´ yuky pˇredmˇetu lze aplikovat stejn´e dva zp˚ usoby.
5.3.3
Typ pˇ redmˇ etu
Pro specifikaci typu pˇredmˇetu, tedy jde-li o cviˇcen´ı, pˇredn´aˇsku nebo nˇeco jin´eho, je pˇripraven n´astroj na obr.5.11.
Obr´azek 5.11: Urˇcen´ı druhu pˇredmˇetu
Zde vybereme typ pˇredmˇetu z nab´ıdky a potvrd´ıme tlaˇc´ıtkem. Pokud jsme vybrali jako typ pˇredn´aˇsku, potvrd´ıme volbu tlaˇc´ıtkem, zobraz´ı se okno pro editaci cviˇcen´ı stejn´e jako na obr.5.12.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
52
Obr´azek 5.12: Vytvoˇren´ı cviˇcen´ı
Pokud zaˇskrtneme moˇznost Make Excercise, zad´ame poˇcet student˚ u v jednotliv´ ych hodin´ach a vybereme typ hodiny, dialogov´e okno n´am umoˇzn´ı vytvoˇrit cviˇcen´ı nebo jak´ ykoli jin´ y typ pˇredmˇet˚ u(laboratoˇre, poˇc´ıtaˇcov´a cviˇcen´ı) propojen´ y s danou pˇredn´aˇskou. Pˇri potvrzen´ı dialogov´eho okna se vytvoˇr´ı pr´avˇe tolik cviˇcen´ı(nebo jin´ ych typ˚ u pˇredmˇetu), kolik je tˇreba. Poˇcet generovan´ ych pˇredmˇet˚ u se odv´ıj´ı od poˇctu student˚ u navˇstˇevuj´ıc´ıch pˇredn´aˇsku a zad´an´ım poˇctu student˚ u na cviˇcen´ı.
5.3.4
Rozvrh uˇ citele
Tvorba rozvrhu uˇcitele, to je dalˇs´ı dialogov´e okno a z´aroveˇ n moˇznost editace rozvrhu na obr.5.13.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
53
Obr´azek 5.13: Tvorba rozvrhu uˇcitele
Opˇet, stejnˇe jako u kap.5.3.2 je okno vyvol´ano v´ ybˇerem uˇcitele ze seznamu. Prvn´ı zobrazen´ı respekntuje zaˇrazen´ı uˇcitele do skupiny(napˇr´ıklad X01) a nab´ıdne na v´ ybˇer pouze pˇredmˇety, zaˇrazen´eve stejn´e skupinˇe. Pracovn´ı plocha je rozdˇelena na tˇri ˇca´sti(na obr.5.13 pops´any ˇc´ısly v pravo). Prvn´ı ˇc´ast(ˇc´ıslo 1 vpravo) ukazuje rozvrh vybran´e m´ıstnosti. Druh´a, prostˇredn´ı ˇca´st pak obsahuje v´ ybˇerov´a data. Posledn´ı, tˇret´ı ˇca´st zobrazuje rozvrh uˇcitele. Zaˇcali bychom popisem prostˇredn´ı(2) ˇc´asti. Ta zobrazuje tˇri tabulky. Prvn´ı(Locations) je seznam lokac´ı, druh´a je seznam pˇredmˇet˚ u a informac´ı o nich. Tˇret´ı je seznam m´ıstnost´ı z dan´e lokace. D´ale zde vid´ıme CheckBox All Room. Jeho zaˇskrtnut´ım zahrneme do tabulek vˇsechny pˇredmˇety ve vˇsech lokac´ıch(viz.obr.5.13). Nic n´am jiˇz nebr´an´ı ve v´ ybˇeru jak´ ychkoli pˇredmˇet˚ u.
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
54
Pˇriˇrazen´ı pˇredmˇetu uˇciteli je moˇzn´e v prvn´ı ˇc´asti str´anky. Vybereme m´ıstnost, zobraz´ıme jej´ı rozvrh(pˇredmˇety nepˇridˇelen´e uˇciteli jsou ˇcerven´e). Klikneme-li na pˇredmˇet, kter´ y chceme aby uˇcil vybran´ y uˇcitel, pˇredmˇet se mu hned zap´ıˇse. Pˇredmˇety obsazen´e jin´ ymi kantory se nezobrazuj´ı. Chceme-li pˇrej´ıt na tvorbu rozvrhu jin´eho uˇcitele, vybereme jeden z jeho pˇredmˇet˚ u ze seznamu v prostˇredn´ı ˇca´sti a potvrd´ıme tlaˇc´ıtkem Go To.
5.3.5
Tvorba obor˚ u
Pˇredmˇety snad na kaˇzd´e ˇskole spadaj´ı do r˚ uzn´ ych obor˚ u a skupin. V n´avrhov´em syst´emu kromˇe toho, ˇze jsou ve skupin´ach (X01, X36, ...) a skupin´ach pˇredmˇet˚ u(povinnˇe voliteln´eS, oborov´e-L, ...), je dalˇs´ı ˇclenˇen´ı a to podle oboru v kter´em se uˇc´ı. Tedy Matematika ze ˇ ıd´ıc´ı technika v 5.semestru skupinˇe pˇredmˇet˚ skupiny X01 bude vyuˇcov´ana v oboru R´ u S. Rozˇrazov´an´ı je umoˇznˇeno dialogov´ ym oknem obr.5.14.
Obr´azek 5.14: Tvorba obor˚ u
Funkˇcnost je opˇet podobn´a pˇredchoz´ım dialogov´ ym okn˚ um a pˇredmˇety se do obor˚ u
KAPITOLA 5. POPIS PROGRAMU PRO TVORBU ROZVRHU
55
zaˇrazuj´ı pomoc´ı ComboBox˚ u. Opˇet zde plat´ı, ˇze aplikace n´as nenech´a udˇelat ˇza´dn´ y nedovolen´ y krok(duplicitn´ı u ´daje, pˇredmˇet˚ u je v oboru jiˇz moc, ...). Je moˇzn´e filtrovat data a to bud’ jednotlivˇe, nebo pomoc´ı CheckBox˚ u filtry ”sv´azat”.
5.3.6
Nastaven´ı pˇ r´ıstupu
K nastaven´ı pˇr´ıstupu k jednotliv´ ym n´astroj˚ um byl vytvoˇren administraˇcn´ı formul´aˇr. Tento formul´aˇr je pˇr´ıstupn´ y pouze administr´ator˚ um. Tˇem umoˇzn ˇuje nastavovat pˇr´ıstupy ke str´ank´am pomoc´ı rol´ı.
Obr´azek 5.15: N´astroj pro administraci pˇr´ıstupu k funkc´ım aplikace
Kapitola 6 Postˇ rehy a probl´ emy zaznamenan´ e pˇ ri tvorbˇ e programu Pˇri tvorbˇe programu jsem nar´aˇzel na mnoho chyb zp˚ usoben´ ych chybami v Silverlightu. To se ust´alilo aˇz s pˇr´ıchodem koneˇcn´e verze Silverlight 2. Chyby tohoto charakteru zde neuv´ad´ım. Jsou zde uveden´e pouze ty hlavn´ı probl´emy, nezp˚ usoben´e nevyladˇen´ım technologie.
6.1
Pot´ıˇ ze pˇ ri pˇ r´ıstupu k webov´ e sluˇ zbˇ e
Pakliˇze se Silverlight snaˇz´ı z´ıskat webovou sluˇzbu na jin´em serveru neˇz se nach´az´ı aplikace, pot´ yk´ame se s cross-domain probl´emem. M˚ uˇze zde doj´ıt k mnoha r˚ uzn´ ym pot´ıˇz´ım. Tou nejˇcastˇejˇs´ı je ta na obr.6.1, tedy server nenalezen.
56
ˇ ´ ´ PRI ˇ TVORBE ˇ PROGRAMU57 KAPITOLA 6. POSTREHY A PROBLEMY ZAZNAMENANE
Obr´azek 6.1: Chyba pˇri pˇr´ısrupu k webov´e sluˇzbˇe
Tato chyba je nejˇcastˇeji vyvol´ana nepˇr´ıtomnost´ı nebo chybou v souborech pro pˇr´ıstup ke sluˇzbˇe(clientaccesspolicy.xml, crossdomain.xml ). Soubory mus´ı b´ yt spr´avnˇe nastaveny a uloˇzeny na spr´avn´em m´ıstˇe, tedy na koˇreni dom´eny kde je sluˇzba(viz.4.2.3)
6.2
Pˇ ripojov´ an´ı reference na sluˇ zbu
Pˇri pˇripojov´an´ı reference na sluˇzbu doch´az´ı ˇcasto k chyb´am. Tou nejˇcastˇejˇs´ı je asi ta odpov´ıdaj´ıc´ı obr.6.2.
Obr´azek 6.2: Chyba pˇri pˇripojov´ an´ı reference na webovou sluˇzbu
To znamen´a, ˇze sluˇzba nen´ı dostupn´a, VS 2008 nem˚ uˇze st´ahnout metadata potˇrebn´a k jej´ımu vybudov´an´ı. M˚ uˇze j´ı zp˚ usobit mnoho r˚ uzn´ ych vˇec´ı. Co na vˇetˇsinou pom˚ uˇze je restart Visual Studia. Pak je dobr´e zkontrolovat obsah souboru web.config, pˇr´ısluˇsej´ıc´ıho ˇ ast k dan´e aplikaci. V nˇem mus´ı b´ yt spr´avnˇe definovan´e tagy a <service>. C´ souboru Web.config, deklaruj´ıc´ı pˇripojovanou sluˇzbu, m˚ uˇze vypadat takto.
ˇ ´ ´ PRI ˇ TVORBE ˇ PROGRAMU58 KAPITOLA 6. POSTREHY A PROBLEMY ZAZNAMENANE ... <system.serviceModel> <serviceBehaviors> <serviceMetadata httpGetEnabled="true"/> <services> <service behaviorConfiguration="AppServicesBehavior" name="System.Web.ApplicationServices.RoleService"> <endpoint binding="basicHttpBinding" bindingConfiguration="userHttp" bindingNamespace="http://asp.net/ApplicationServices/v200" contract="System.Web.ApplicationServices.RoleService"/> ...
Dalˇs´ı moˇznou chybou je ta na obr.6.3 ta nastane, kdyˇz se snaˇz´ıme pˇripojit sluˇzbu, jej´ıˇz n´azev se shoduje s n´azvem sluˇzby jiˇz nˇekdy pˇripojen´e.
Obr´azek 6.3: Chyba pˇri pˇripojov´ an´ı sluˇzby
Pˇri ruˇsen´ı sluˇzby jsme zapomnˇeli vymazat deklaraci sluˇzby v souboru Web.config. Staˇc´ı jen umazat n´ody , <service> z Web.config, pˇr´ısluˇsej´ıc´ı nepouˇz´ıvan´e sluˇzbˇe.
Obr´azek 6.4: Chyba pˇri pˇripojov´ an´ı reference na webovou sluˇzbu
Pokud jsou splnˇeny vˇsechny v´ıˇse zm´ınˇen´e podm´ınky, s pˇripojen´ım sluˇzby by nemˇel b´ yt ˇza´dn´ y probl´em.
ˇ ´ ´ PRI ˇ TVORBE ˇ PROGRAMU59 KAPITOLA 6. POSTREHY A PROBLEMY ZAZNAMENANE
6.3
Probl´ emy s ASP.NET configur´ atorem
Chcete-li administrovat vaˇsi ASP.NET str´anku ASP.NET konfiguraˇcn´ım n´astrojem a pˇri jeho vyvol´an´ı vyvstane chyba stejn´a jako na obr.6.5, znamen´a to absenci SQL datab´aze.
Obr´azek 6.5: ASP.NET Configuration chyba
V norm´aln´ım pˇr´ıpadˇe se pˇri prvn´ım otevˇren´ı ASP.NET konfigur´atoru k aplikaci do sloˇzky App_Data pˇripoj´ı datab´aze s n´azvem ASPNETDB.MDF. V naˇsem pˇr´ıpadˇe ji mus´ıme pˇripojit ruˇcnˇe. To znamen´a ji bud’ st´ahnout z webu Microsoftu, nebo z´ıskat nˇejak´ ym jin´ ym zp˚ usobem a pˇres jej´ı connectionString, kter´ y pˇrid´ame do souboru Web.config, ji pˇripojit. Pak staˇc´ı restartovat ASP.NET konfigur´ator a vˇse funguje jak m´a.
6.4
Odchyt´ av´ an´ı ud´ alost´ı myˇ si
Zd´a se to b´ yt zvl´aˇstn´ı, ale je to tak. Silvelright nepodporuje obsluhu ud´alost´ı myˇsi jako jsou MouseDoubleClick, MouseMiddleButton, MouseRightButton. Ud´alostmi, kter´e m˚ uˇzeme pouˇz´ıt pˇri programov´an´ı SL aplikace, jsou ty pro lev´e tlaˇc´ıtko myˇsi, a samozˇrejmˇe obsluha ud´alost´ı kl´asnice. Rada na to jak tento probl´em obej´ıt nen´ı. A d˚ uvod absence tˇechto ud´alost´ı? Je to pˇrenositelnost. Bylo to vˇzdy tak, ˇze to co fungovalo v IE nebo FireFoxu nefungovalo v Mac-Safari, tak nezb´ yvalo neˇz se zamˇeˇrit na tyto druhy prohl´ıˇzeˇc˚ u a k´od upravit na m´ıru kaˇzd´emu zvl´aˇst’. To je siln´a str´anka Silverlightu, opravdov´a pˇrenositelnost. Tlaˇc´ıtka myˇsi zde hraj´ı velkou roli. Doned´avna platilo, ˇze Mac mˇel tradiˇcnˇe jedno tlaˇc´ıtko myˇsi. To se automaticky pokl´ad´a za to lev´e
ˇ ´ ´ PRI ˇ TVORBE ˇ PROGRAMU60 KAPITOLA 6. POSTREHY A PROBLEMY ZAZNAMENANE na myˇs´ıch pouˇz´ıvan´ ych ve Windows. Nov´e Macy maj´ı ovl´adac´ı zaˇr´ızen´ı s v´ıce neˇz jedn´ım tlaˇc´ıtkem, avˇsak s minulost´ı se mus´ı poˇc´ıtat. A jak do toho zapad´a double click? To m´a p˚ uvod v pˇrenositelnosti Silvelrightu na mobiln´ı zaˇr´ızen´ı kde je dvouklik probl´em. Silverlight je velmi komplexn´ı technologie a na to mus´ıme myslet pˇri implementaci aplikac´ı v nˇem.
6.5
Silverlight configuration
Jak jsme mluvili o nemoˇznosti pouˇziv´an´ı prav´eho tlaˇc´ıtka myˇsi v Silverlightu neˇrekli jsme co se stane pouˇzijeme-li ho. Pouˇzit´ım prav´eho tlaˇc´ıtka myˇsi u jak´ekoli SL aplikace vyvol´ame n´astroj pro spr´avu Silverlightu.
Obr´azek 6.6: N´astroj pro spr´avu SL aplikace
Tento n´astroj umoˇzn ˇuje nastaven´ı chov´an´ı Silverlightu na klientsk´em poˇc´ıtaˇci. Je zde moˇzn´e nastavovat druh aktualizac´ı pro Silverlight, umoˇznˇen´ı ukl´ad´an´ı dat do IsolatedStorage.
Odpovˇedi na hodnˇe ot´azek okolo Silverlightu lze naj´ıt napˇr´ıklad v [4].
Kapitola 7 Z´ avˇ er V r´amci t´eto diplomov´e pr´ace byla vyzkouˇsena nov´a technologie Microsoftu pro tvorbu ´ RIA aplikac´ı, Silverlight. Ukolem pr´ace bylo se s technologi´ı Silverlight sezn´amit, popsat jej´ı moˇznosti, klady a z´apory. V´ ysledky byly porovn´any s nejvˇetˇs´ım konkurentem, Adobe Flash. Silverlight komunikuje s datab´azemi pomoc´ı webov´ ych sluˇzeb. V r´amci pr´ace byly vyzkouˇseny pˇr´ıstupy k r˚ uzn´ ym datov´ ym zdroj˚ um pomoc´ı webov´ ych sluˇzeb. Vˇsechny tyto technologie a poznatky byly pouˇzity pˇri tvorbˇe pilotn´ıho projektu, kter´ ym byla zvolena aplikace pro tvorbu rozvrhu. Vytvoˇren´ y program umoˇzn ˇuje tvorbu rozvrhu ˇskoly od z´akladn´ıho zad´av´an´ı poloˇzek do datab´aze, aˇz po nastavov´an´ı pˇr´ıstupu k aplikaci podle rol´ı uˇzivatel˚ u. Vˇse bylo integrov´ano do ASP.NET str´anky a vlastn´ı n´astroj dostal grafick´e uˇzatelsk´e rozhran´ı, zaloˇzen´e na rol´ıch uˇzivatel˚ u. Na z´akladˇe poˇzadavk˚ u na aplikaci byla vytvoˇrena relaˇcn´ı datab´aze uchov´avaj´ıc´ı data aplikace. Vytvoˇren´e rozhran´ı umoˇzn ˇuje u ´plnou tvorbu rozvrhu a je dobr´ ym z´akladem pro v´ yvoj rozvrhov´eho syst´emu. Pr´ace se Silverlightem, z program´atorsk´eho hlediska, nebyla vˇzdy na v´ ybornou. Pˇri tvorbˇe rozhran´ı jsem nar´aˇzel neust´ale na probl´emy s technologi´ı Silverlight. Je tˇreba ˇr´ıci, ˇze bˇehem tvorby t´eto pr´ace se aktu´aln´ı, nejnovˇejˇs´ı, verze Silverlightu nˇekolikr´at zmˇenila. Aˇz v posledn´ım uvolnˇen´ı, na podzim roku 2008, byla k dispozici koneˇcn´a verze(Silverlight 2), tedy verze bez vˇetˇs´ıch chyb.
61
Literatura [1] ASP.NET 2.0 a C] profesion´ alnˇe. Matthew MacDonald, Mario Szpuszta, 2006. [2] Microsoft Developer Network MSDN. dostupn´ y na http://msdn.microsoft.com/en-us. [3] W3C konsorcium. dostupn´e na www.w3.org/. [4] Ofici´aln´ı str´anky Silverlightu, dostupn´e na http://silverlight.net/. [5] Blog Scotta Guthrie vˇenovan´y Silverlightu, dostupn´e na http://weblogs.asp.net/scottgu/archive/2007/05/07/silverlight.aspx. [6] N´avod na nastaven´ı Visual Studia pro implementaci Silverlight aplikac´ı, dostupn´e na http://silverlight.net/GetStarted/. [7] Blog s pˇr´ıspˇevky o v´yvoji webov´ych aplikac´ı, dostupn´e na http://www.scottklarr.com. [8] Integrace AJAXu do ASP.NET, dostupn´e na http://www.asp.net/ajax/. [9] Hana Kozelkov´a, Bakal´ aˇrsk´ a pr´ace:Editor ER diagram˚ u s podporou pˇrevodu do relaˇcn´ıho modelu, Praha: UK MAT-FYZ, 2007. [10] Blog Scotta Guthrie vˇenovan´y LINQ, dostupn´e na http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.asp. [11] Ofici´aln´ı str´anky Microsoft WCF, dostupn´e na http://msdn.microsoft.com/en-us/netframework/aa663324.aspx. [12] Ofici´aln´ı str´anky Microsoft WPF, dostupn´e na http://msdn.microsoft.com/en-us/netframework/aa663326.aspx. 62
LITERATURA [13] Port´al s program´ atorsk´ymi t´ematy, dostupn´e na http://community.dynamics.com/blogs.
63
Pˇ r´ıloha A Seznam pouˇ zit´ eho softwaru c • Microsoft Windows XP° • Microsoft Visual Studio Team System 2008 • Microsoft Expression Blend 2.5 Beta • Microsoft SQL Server 2008 Express • Microsoft Office Visio 2003 • MikTex 2.7 • WinEdt 5 • FastStone Capture • BSR Screen Capture • Adobe Photoshop CS
I
Pˇ r´ıloha B Obsah pˇ riloˇ zen´ eho CD • Zdrojov´ e k´ ody: Zdrojov´e k´ody vytvoˇren´e aplikace pro Silverlight. • Datab´ aze: Datab´aze potˇrebn´e pro chod aplikace. • Dokumentace : Tento dokument ve form´atu PDF, zdrojov´e k´ody pro LaTeX. • Video : Videoz´aznam o pouˇzit´ı aplikace.
II