microsoft silverlight · jaoks, mis oleks suuteline töötama igal platvormil. silverlight oli...

19
Tallinna Ülikool Informaatika Instituut Microsoft Silverlight Seminaritöö Autor: Ilja Šmorgun Juhendaja: Jaagup Kippar Autor: ...................................................... "......" ........................ 2008. a. Juhendaja: ............................................... "......" ........................ 2008. a. Instituudi direktor: .................................. "......" ........................ 2008. a. Tallinn 2008

Upload: others

Post on 26-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

Tallinna Ülikool

Informaatika Instituut

Microsoft Silverlight

Seminaritöö

Autor: Ilja Šmorgun

Juhendaja: Jaagup Kippar

Autor: ...................................................... "......" ........................ 2008. a.

Juhendaja: ............................................... "......" ........................ 2008. a.

Instituudi direktor: .................................. "......" ........................ 2008. a.

Tallinn 2008

Page 2: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

2

Sisukord

Sissejuhatus ..................................................................................................................................... 3

1. Windows Presentation Foundation........................................................................................... 4

1.1. Rakenduste loomise töövoog ............................................................................................ 4

1.2. Windows Presentation Foundation’i puudused ................................................................ 5

1.3. WPF’i probleemi lahendus ............................................................................................... 5

2. Silverlight ................................................................................................................................. 6

2.1. Silverlighti esimese versiooni puudused ........................................................................... 6

2.2. Silverlight 2.0 .................................................................................................................... 6

2.3. Silverlight vs WPF ............................................................................................................ 7

3. Silverlighti veebipõhine meedia pleier ..................................................................................... 8

3.1. Rakenduse loomine: esimene etapp .................................................................................. 8

3.2. Rakenduse loomine: teine etapp ..................................................................................... 11

3.3. Rakenduse loomine: kolmas etapp ................................................................................. 14

3.4. Rakenduse loomine: neljas etapp .................................................................................... 16

3.5. Töö käigus kasutatud tööriistad ...................................................................................... 17

Kokkuvõte ..................................................................................................................................... 18

Kasutatud kirjandus ....................................................................................................................... 19

Töö materjalid: .............................................................................................................................. 19

Page 3: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

3

Sissejuhatus

Siinse töö eesmärgiks on tutvustada uue Microsofti veebitehnoloogiat nimega Silverlight.

Lugedes antud materjali on võimalik teada saada, kuidas ilmus idee tuua töölauarakenduste

omadusi ja .�ET Raamistiku võimalusi interneti brauseri. Selle idee realiseerimise tulemuseks on

viis luua erksaid rakendusi, mis on platvormist sõltumatud ja mis tulevikus muudavad meie

ettekujutust sellest, kuidas peaks toimima töö arvutiga.

Minu tutvumine antud .NET Raamistiku osaga algas Windows Presentation Foundation’ist aastas

2006. Mind hämmastas see, kuidas on võimalik suhteliselt lihtsalt ja kiiresti luua rakenduse, mis

näeb hämmastavalt välja, mis on suuteline kasutama arvuti graafikakaardi ressursse selleks, et

näidata kasutajale animatsioone, graafikuid, pilte ja esitada andmeid ja infot arusaadaval ja

põneval kujul.

Järgmise aasta sügisel oli avalikustatud Silverlight, WPF’st nuditud versioon, mõeldud brauseri

jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm

edasi, ja kuna kõik tööriistad ja töövoog jäid samaks, siis hakkasin selle uurimist. Kuid reaalne

katsetamine Silverlighti rakendustega algas ainult teise versiooni esimesest beetast (Silverlight

2.0 Beta 1), mis ilmus 2008. aasta alguses. Sellest ajast siiamaani jälgisin antud tehnoloogia

arenguprotsessi suure huviga, mis võimaldas mulle koguda piisavalt infot selleks, et kirjutada

antud tööd.

Töö on jaotatud kolmeks peatükiks. Esimesel jutustatakse sellest, mis on Silverlighti nii

nimetatud eelkäia – Windows Presentation Foundation, selle omapärad, eelised ja puudused.

Teine peatükk on pühendatud Silverlightile – mida kujutas endast tehnoloogia esimene versioon,

millised olid selle puudused; millised muutused olid toodut sisse teises versioonis, mis tuli välja

oma lõppkujul 2008. aasta sügisel.

Kolmas peatükk on pühendatud töö autori poolt loodud Silverlighti rakenduse näitele. Lugeja

saab tutvuda rakenduse loomise etappidega ja tööriistadega, mis olid iga etapi käigus kasutatud.

Kuna Silverlight on veel väga uus tehnoloogia, siis mingisugune eestikeelne materjal sellel

teemal praktiliselt puudub. Loodan, et minu töö suudab äratada huvi ka teiste infotehnoloogia

üliõpilaste seas, ja nad saaksid kasutada seda oma esimeste Silverlighti rakenduste arendamise

katsete käigus.

Page 4: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

4

1. Windows Presentation Foundation

Windows Presentation Foundation on Microsofti tehnoloogia, mis võimaldab luua erksa

kujundusega lauarakendusi. Sellised rakendused suudavad kasutada arvuti graafikakaardi

protsessori võimalusi selleks, et demonstreerida rikkaliku graafikat, animatsioone, kõrge

kvaliteediga tekste ja erinevaid efekte. Tähtis on see, et kõik eelnimetatud kasutajaliidese

komponendid on sõltumatud ekraani suurusest. Tulemuseks on see, et rakendus näeb

hämmastavalt hea välja iga monitori peal.

Windows Presentation Foundation on Microsofti .�ET Raamistiku versiooni 3.0 üks osa ja alates

Windows Vistast on see saadaval koos operatsioonisüsteemiga.

1.1. Rakenduste loomise töövoog

WPF klassi rakenduste loomisel on olemas omapärane töövoog, mis koosneb kahest osast. Selle

välja arendamise põhimõtte on lihtne. Kui vaadelda tänapäevast rakenduste arendamise protsessi

lihtsustatud kujul, siis selles osalevad kahe kategooria inimesed: arendajad ja disainerid. Enne

WPF’i programmid olid loodud järgmise skeemi järgi: disainer sai ülesannet luua kasutajaliidese

maketi rakenduse jaoks, mis täidaks mingisuguseid eesmärke. Kujundi kavandamine toimiks

tavaliselt Adobe Illustratoris või siis Adobe Photoshopis, või kasutades mis iganes muud graafika

redigeerimisprogrammi. Tulemuseks olid pildid, või Flashis tehtud animatsioonid, mis näitaksid,

kuidas rakendus peaks käituma ühe või teise stsenaariumi järgi.

Teisel faasil arendaja võttis disaineri poolt ettevalmistatud materjalid ja üritas koodi abil luua

rakenduse, mis näeks välja maksimaalselt sarnaselt sellega, kuidas disainer seda endale ette

kujutas. Kuid antud töö täitmine oli väga raske, kuna olemasolevad arendaja tööriistad ei olnud

mõeldud selleks, et luua rikka kujundusega programme. Sellega tuli teha kompromisse ja

lõpptulemus ei olnud sugugi selline, kui see oli alguses mõeldud.

WPF’i rakenduste kasutajaliidese komponentide loomiseks töötas Microsoft välja spetsiaalse

paketti tööriistu, nimega Expression Studio, mis võimaldavad disaineril võtta oma varem tehtud

materjalid, ja panna neid töötama, ilma koodi teadmata ja ilma, et ta segaks programmeerija tööd.

Kasutajaliidese loomiseks oli loodud spetsiaalne keel XAML, mis on XML’i põhine deklaratiivne

keel, sarnane näiteks HTML’iga. XAMLi abil saab väga lihtsal viisil defineerida erinevaid

Page 5: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

5

kasutajaliidese elemente. Näiteks alltoodut koodi abil (vt. koodinäide 1) saab luua sinise taustaga

punase sildiga nuppu, mille peal on kirjutatud „See on nupp“:

<Button Background="Blue" Foreground="Red" Content="See on nupp"/>

Koodinäide 1. !upu deklaareerimine XAML koodis

1.2. Windows Presentation Foundation’i puudused

Tänapäevases maailmas, kus tavainimene omab mitu seadet, näiteks laua- ja sülearvutit ja „tarka“

mobiiltelefoni, on Windows Presentation Foundation’il olemas üks suur puudus – selleks, et

antud tehnoloogial põhinevad rakendused töötaksid, on vaja Windows’i operatsioonsüsteemi.

1.3. WPF’i probleemi lahendus

Selle probleemi lahendamiseks tekkis mõtte luua WPF’ist nuditud versioon, mis oleks

platvormist sõltumatu. Tundub, et selle idee realiseerimiseks kõige lihtsam viis oleks jooksutada

selliseid rakendusi interneti brauseris. Kuna infotehnoloogia tööstusharu kiireneva tempoga

liigub internetipõhise arvutiga töötamise poole, siis sellel lähenemisel kohe tekkivad plussid

juurde.

WPF’i brauseripõhilise versiooni koodnimeks oli WPF/E, mis tähendab Windows Presentation

Foundation Everywhere ehk igal pool. Hiljem tekis nimetus Silverlight.

Page 6: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

6

2. Silverlight

Silverlighti esimene versioon ilmus 2007. aasta sügisel. Selle omadused olid piiratud – Silverlight

1.0 oli digitaalse meedia esitamise platvorm. Silverlight võimaldas kliendile vaadata kõrgema,

võrreldes tavalise Flash pleierite, kvaliteediga videoid, ilma et oleks vaja oodata, kuna brauser

laeb piisava tüki sisust. Üks huvitavamatest näidetest oli Foxi filmistuudio poolt loodud

proovirakendus Fox Trailers, kus oli võimalik vaadata peatselt saabuvate filmide klippe.

2.1. Silverlighti esimese versiooni puudused

Rakenduste loomine oli raske, kuna koodi oli võimalik kirjutada ainult kasutades JavaScripti.

Kasutajaliidese loomiseks olid saadaval primitiivsed kujundid, ja selleks, et luua midagi tarka,

arendajal tuli näha päris palju vaeva JavaScripti manipuleerimisega.

2.2. Silverlight 2.0

Tehnoloogiast teine versioon oli välja kuulutatud samal ajal, kui ilmus Silverligthi 1.0

finaalversioon. Arendamisefaas kestis peaaegu aasta, ja 2.0’st finaalversioon ilmus 2008. aasta

oktoobri keskel.

Silverlighti teine versioon toob väga palju uuendusi. Nüüd on saadaval igasugused kasutajaliidese

komponendid, millest igaühe jaoks võib luua oma stiliseeritud kujunduse. Rakenduste koodi

kirjutatakse C#, mis on mitmeid kordi edasijõudnum keel, kui JavaScript. See on ka arusaadav,

kuna JavaScript ei ole selliste ülesannete jaoks mõeldud.

WPF’i rakenduste loomise töövoog on Silverlightis säilinud, sellega kõik vajalikud tööriistad

jäävad samaks. Disainerile läheb vaja Expression Studio 2 tooteid, enamasti Expression Blendi,

mille abil saab ära paigutada kõik kasutajaliidese komponendid, tekitada animatsioone ja määrate

nuppude funktsioonid.

Enda töö jaoks hakkab arendaja kasutama Visual Studio’t 2008, kus on olemas kõik vajalikud

tööriistad selleks, et efektiivselt kirjutada koodi, mis panebki rakenduse täitma püstitatud

eesmärke.

Page 7: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

7

2.3. Silverlight vs WPF

Silverlighti ja WPF vahel on olemas mõned erinevused, kuna nagu oli enne mainitud, Silverlight

on WPF’st nuditud versioon. Edasi vaatleme neid tunnuseid, mis Silverlightis puuduvad või on

esitatud teisel kujul.

1. Silverlight ei toeta käske (commanding), mille tugi on olemas WPF’is. Lihtsaim näide

käskudest on näiteks oskus kasutada lõikamist, kopeerimist ja kleepimist (cut, copy,

paste). Järgmiselt (vt. koodinäide 2) on toodut näide, kuidas käsud töötavad WPF’i

rakendustes.

<StackPanel>

<Menu>

<MenuItem Command="ApplicationCommands.Paste" />

</Menu>

<TextBox />

</StackPanel>

Koodinäide 2. WPFis käsu lisamine kasutajaliidese komponendile

2. Dünaamilised ressursid (dynamic resources). Kõik objektid XAMLis on staatilised, kuna

Silverlightis puudub dünaamiliste objektide tugi.

3. Andmete sidumine (data binding). Paljud andmete sidumise võimalused on Silverlightis ja

WPFis samad. Kuid üheks omaduseks, mille järgi puudust kindlasti tunnetakse on

võimalus siduda otseselt XMLi andmetega.

4. Päästikud (triggers). Silverlighti võimlused kasutada triggereid on piiratud EventTriggeri

laetud sündmuse (Loaded event) ja alusta jututahvli (BeginStoryboard) kasutamisega

(Microsoft, Silverlight: WPF Compatibility).

Rohkem infot Silverlighti ja WPF erinevuste kohta on võimalik saada siit:

http://msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx

Page 8: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

8

3. Silverlighti veebipõhine meedia pleier

Oma seminaritöö jaoks ehitasin ma valmis meediapleieri rakenduse, mis, ootamatult, näitab

videot. Programm võimaldab videot peatuma, manipuleerida heliga ja vaadata seda täisekraanil.

Rakenduse loomine koosnes kolmest etapist.

3.1. Rakenduse loomine: esimene etapp

Alguses Adobe Illustrator CS3 abil oli loodud rakenduse vektorgraafiline kujundus ja

komponendid jagatud kihtideks (vt. joonis 1). Edasi tuli valmis tehtud komponente välja

eksportida. Kuna pleieri alusel ja heliindikaatoril on suhteliselt keerukas struktuur, siis need olid

salvestatud P�G failidena. PNG formaat on eelistatud sellepärast, et see toetab läbipaistvust.

Sellega alusel võivad olla augud sees ja pärast nende läbi on nähtavad teised kasutajaliidese

komponendid. Antud trikk võimaldas saavutada näiteks seda, et video peal on olemas läige, mis

on tegelikult pleieri aluse pildi osa.

Page 9: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

Joonis 1. Rakenduse kujunduse loomine Adobe Illustratoris

Rakenduse prototüüp loodud Adobe Illustratoris. Komponendid on jagatud kolme kihi vahel:

1. VolumeIndicator – sisaldab heli tugevuse indikaatori kujundust

2. PlayPause Btn – sisaldab nuppude kujundust

3. Player – sisaldab pleieri aluse koos läikega

Nuppud olid toodud sisse Expression Design’i

formaadis. Expression Designi omapära seisneb selles, et see on võimeline võt

Illustratoris joonistatud kujunduse ja

kadu, nagu oleks siis, kui nuppudest oleksid tehtud pildid, ja

täpne.

Rakenduse kujunduse loomine Adobe Illustratoris

Rakenduse prototüüp loodud Adobe Illustratoris. Komponendid on jagatud kolme kihi vahel:

sisaldab heli tugevuse indikaatori kujundust

sisaldab nuppude kujundust

sisaldab pleieri aluse koos läikega

Expression Design’i (vt. joonis 2) ja siis eksporditud

Expression Designi omapära seisneb selles, et see on võimeline võt

Illustratoris joonistatud kujunduse ja konverteerida seda XAML koodiks.

kadu, nagu oleks siis, kui nuppudest oleksid tehtud pildid, ja lõpprakenduses on graafika ergas ja

9

Rakenduse prototüüp loodud Adobe Illustratoris. Komponendid on jagatud kolme kihi vahel:

ja siis eksporditud Silverlight Canvas

Expression Designi omapära seisneb selles, et see on võimeline võtma Adobe

koodiks. Sellega ei teki kvaliteedi

lõpprakenduses on graafika ergas ja

Page 10: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

Joonis 2. !upude eksporteerimine Expression Design'i

Nuppud on eksporditud Expression

Edasi on toodut tükk XAML koodist, mille abil luuake

<Path x:Name="Path_274" Width="60.7116"

Canvas.Top="9.32947" Stretch="Fill" Data="F1 M 64.9713,9.32947L 21.8555,9.32947C 19.4707,9.32947 17.2539,10.1342 15.4153,11.5131C 14.7683,12.0912 14.2032,12.7566

13.7369,13.4922C 15.8203,11.0691 18.7579,9.55734 22.01168.8645,9.55734 72.4167,11.8894 74.4485,15.4063C 74.2454,14.8242 73.9869,14.2683

73.6791,13.7448C 71.5664,11.0404 68.4479,9.32947 64.9713,9.32947">

<Path.Fill>

<LinearGradientBrush StartPoint="0.362037,

<GradientStop Color="#FFFFFFFF" Offset="0"/>

<GradientStop Color="#FFFBD89E" Offset="0.497889"/>

<GradientStop Color="#FFF8B23E" Offset="1"/>

</LinearGradientBrush>

</Path.Fill>

</Path>

Koodinäide 3. Stopp nuppu XAML kood

!upude eksporteerimine Expression Design'i

Nuppud on eksporditud Expression Designi, mille abil genereeritakse XAML koodi.

Edasi on toodut tükk XAML koodist, mille abil luuake Stopp nupp (vt. koodinäide 3

<Path x:Name="Path_274" Width="60.7116" Height="6.07681" Canvas.Left="13.7369"

Canvas.Top="9.32947" Stretch="Fill" Data="F1 M 64.9713,9.32947L 21.8555,9.32947C 19.4707,9.32947 17.2539,10.1342 15.4153,11.5131C 14.7683,12.0912 14.2032,12.7566

13.7369,13.4922C 15.8203,11.0691 18.7579,9.55734 22.0117,9.55734L 64.8151,9.55734C 68.8645,9.55734 72.4167,11.8894 74.4485,15.4063C 74.2454,14.8242 73.9869,14.2683

73.6791,13.7448C 71.5664,11.0404 68.4479,9.32947 64.9713,9.32947">

<LinearGradientBrush StartPoint="0.362037,-1.41644" EndPoint="0.36

<GradientStop Color="#FFFFFFFF" Offset="0"/>

<GradientStop Color="#FFFBD89E" Offset="0.497889"/>

<GradientStop Color="#FFF8B23E" Offset="1"/>

</LinearGradientBrush>

Stopp nuppu XAML kood

10

XAML koodi.

(vt. koodinäide 3).

Height="6.07681" Canvas.Left="13.7369"

Canvas.Top="9.32947" Stretch="Fill" Data="F1 M 64.9713,9.32947L 21.8555,9.32947C 19.4707,9.32947 17.2539,10.1342 15.4153,11.5131C 14.7683,12.0912 14.2032,12.7566

7,9.55734L 64.8151,9.55734C 68.8645,9.55734 72.4167,11.8894 74.4485,15.4063C 74.2454,14.8242 73.9869,14.2683

73.6791,13.7448C 71.5664,11.0404 68.4479,9.32947 64.9713,9.32947">

1.41644" EndPoint="0.362037,1.66199">

<GradientStop Color="#FFFBD89E" Offset="0.497889"/>

Page 11: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

3.2. Rakenduse loomine: teine etapp

Nüüd kui kõik vajalikud kasutaja lii

jaoks kasutasin Expression Blendi

Alguses lõin uue projekti ja valisin selle tüübiks

Võrreldes tavalise WPF rakendusega, Silverlighti projektil on olemas mõned omapärad.

Joonis 3. Uue projekti loomine Expression Blend'is

Kõik rakenduse komponendid lisatakse

keel, siis ka komponentide struktuur on puu kujuline. Juurelemendiks on

(Grid), mille nimeks on LayoutRoot

kerimisnäidik (ScrollViewer

objekte oma rakenduses paigutada.

Juur elemendi kasutamine ei ole kohu

teiste elementide paigutust rakenduse ala sees.

tulemuseks on see, et antud ristk

loomine: teine etapp

Nüüd kui kõik vajalikud kasutaja liidese komponendid on olemas, sai

Expression Blendi.

Alguses lõin uue projekti ja valisin selle tüübiks „Silverlight 2.0 rakenduse“

avalise WPF rakendusega, Silverlighti projektil on olemas mõned omapärad.

. Uue projekti loomine Expression Blend'is

Kõik rakenduse komponendid lisatakse User Control objektile. Kuna XAML on XMLi põhine

keel, siis ka komponentide struktuur on puu kujuline. Juurelemendiks on

LayoutRoot. Võrgustiku asemel võib olla raam

ScrollViewer). Juur elemendi tüüpi saab muuta vastavalt sellele, kuidas tahetakse

objekte oma rakenduses paigutada.

elemendi kasutamine ei ole kohustuslik, aga on siiski soovitatav, kuna see võimaldab muuta

teiste elementide paigutust rakenduse ala sees. Võrgustiku asendamise, näiteks ristküülikuga,

antud ristküliku asukoht on staatiline, ning seda ei saa kuidagi muuta.

11

dese komponendid on olemas, sai panna neid kokku. Selle

„Silverlight 2.0 rakenduse“ (vt. joonis 3).

avalise WPF rakendusega, Silverlighti projektil on olemas mõned omapärad.

Expression

Blendis uue

projekti loomise

dialoog aken.

Valime tüübiks

Silverlighti 2.0

rakendus,

määrame nime;

asukoha, kuhu

salvestada ja

programmerimi

s keele. Antud

juhul on see

Visual C#.

Kuna XAML on XMLi põhine

keel, siis ka komponentide struktuur on puu kujuline. Juurelemendiks on nii nimetatud võrgustik

raam, lõuend, kuhjapaneel või

Juur elemendi tüüpi saab muuta vastavalt sellele, kuidas tahetakse

v, kuna see võimaldab muuta

Võrgustiku asendamise, näiteks ristküülikuga,

seda ei saa kuidagi muuta.

Page 12: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

Joonis 4. Komponentide puu Expression Blend'is

Kuna Expression Blend ja Visual Studio 2008 on integreeritud tein

jagavad nad teine teisega ka projekti struktuuri

Joonis 5. Expression Blendi projektipuu sarnasus Visual

Studioga

. Komponentide puu Expression Blend'is

Nagu on illustratsioonist näha

alguseks paigutasin juur elemendi sisse veel

ühe võrgustiku nimega

sees on omajärgi kõik teised elemendid, mis

koostavad pleieri. Ainuke element väljaspool

playerFrame’i on VidScUC (Video Scene User

Control). Antud sammu mõtte seisneb selles,

et VidScUC on põhilise kasutajaliidese jaoks

võõras komponent, mis tuleb mängu ainult

siis, kui vajutatakse täisekraan nupu ja

peidetakse kõik teised objektid.

Kuna Expression Blend ja Visual Studio 2008 on integreeritud teineteisega, siis mugavuse mõttes

jagavad nad teine teisega ka projekti struktuuri (vt. joonis 5).

. Expression Blendi projektipuu sarnasus Visual

Expression Blendi projekti puu

samasugune ka Visual Studios.

Vajutades parema hiire nupuga

peale (Solution) on võimalik valida käsu

Redigeeri Visual Studios (Edit in Visual

Studio).

12

Nagu on illustratsioonist näha (vt. joonis 4),

alguseks paigutasin juur elemendi sisse veel

ühe võrgustiku nimega playerFrame, mille

on omajärgi kõik teised elemendid, mis

Ainuke element väljaspool

VidScUC (Video Scene User

Antud sammu mõtte seisneb selles,

on põhilise kasutajaliidese jaoks

võõras komponent, mis tuleb mängu ainult

takse täisekraan nupu ja

peidetakse kõik teised objektid.

teisega, siis mugavuse mõttes

Expression Blendi projekti puu, mis on täiesti

samasugune ka Visual Studios.

Vajutades parema hiire nupuga lahenduse

on võimalik valida käsu

Studios (Edit in Visual

Page 13: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

13

Nagu projektipuust on näha (vt. joonis 5), on rakendusele lisatud veel kaks kasutaja kontroll

tüübist elemendi. Need on VideoSceneUC.xaml ja VolumeIndicatorUC.xaml. Loogika on sarnane

näiteks Java programmeerimisega, kus on kombes paigutada klassid eraldi failidesse. Sama idee

on kasutusele võetud ka Silverlighti rakendustes ja tehakse seda selleks, et mitte lasta ühele

XAML failile kasvada liiga suureks, kuna see lõpptulemuseks mõjub rakenduse teostusvõimet.

Selleks, et kasutada ühe kasutaja kontrolli teise sees on vaja täita kaks lihtsat sammu.

1. Defineeritakse põhikontrolli sees uue XML namespace’i (vt. koodinäide 4). See võib näha

välja näiteks nii:

xmlns:MediaPlayer2="clr-namespace:MediaPlayer2"

Koodinäide 4. XML namespace’i defineerimine

2. Paigutakase võrgustiku sees soovitava objekti. Antud juhul on see VideoSceneUC (vt.

koodinäide 5).

<MediaPlayer2:VideoSceneUC x:Name="VidScUC" Visibility="Collapsed" />

Koodinäide 5. Valmisoleva kasutaja kontrolli lisamine

Nagu on koodist näha, alguses on VideoSceneUC nähtavuse omaduseks Collapsed, ehk peidetud.

Pärast on see C# koodi kaudu muudetud nähtavaks.

Kui kõik kasutajaliidese komponendid on ära paigatud, määratakse nuppude funktsioonid ja

liigutakse järgmise etapi juurde.

Page 14: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

Joonis 6. !upu funktsioonide määramine Expression

Blendis.

3.3. Rakenduse loomine: kolmas etapp

Kõik edaspidine töö toimub Visual Studio

mingil juhul seda, et rakenduse kujundus peab olema lukus, ja seda ei saa täita ega muuta.

ja Silverlighti töövoo veetlus seisnebki selles, et disainer ja arendaja sa

ilma, et nad teine teist segaksid.

Edasi on toodud koodi jupp, mis paneb helitu nupu töötama nii, nagu on oodatud

6).

private void soundMuteBtnClick(object sender, RoutedEventArgs e)

{

VolumeIndUC.Visibility =

if (videoElement.IsMuted == false)

{

videoElement.IsMuted = true;

VolumeIndUC.VlmIndicator.Width = 0;

}

!upu funktsioonide määramine Expression

Tööriist toob välja kõik antud tüübist

komponendi küljes olevad

(vt. joonis 6). Antud näides on valitud nupu

klõpsamine, mis kutsub välja funktsiooni

soundMuteBtnClick.

Vajutades Enter’it tehakse lahti

kus saab C# koodi abil määrata, mida nupp

hakkab tegema antud sündmuse ajal.

Rakenduse loomine: kolmas etapp

edaspidine töö toimub Visual Studio’s. Kuid nagu oli alguses mainitud, ei tähenda see

mingil juhul seda, et rakenduse kujundus peab olema lukus, ja seda ei saa täita ega muuta.

ja Silverlighti töövoo veetlus seisnebki selles, et disainer ja arendaja saavad teha tööd samal ajal,

ilma, et nad teine teist segaksid.

koodi jupp, mis paneb helitu nupu töötama nii, nagu on oodatud

private void soundMuteBtnClick(object sender, RoutedEventArgs e)

VolumeIndUC.Visibility = Visibility.Visible;

if (videoElement.IsMuted == false)

videoElement.IsMuted = true;

VolumeIndUC.VlmIndicator.Width = 0;

14

Tööriist toob välja kõik antud tüübist

komponendi küljes olevad sündmused (events)

Antud näides on valitud nupu

klõpsamine, mis kutsub välja funktsiooni

tehakse lahti Visual Studio,

kus saab C# koodi abil määrata, mida nupp

hakkab tegema antud sündmuse ajal.

Kuid nagu oli alguses mainitud, ei tähenda see

mingil juhul seda, et rakenduse kujundus peab olema lukus, ja seda ei saa täita ega muuta. WPF

avad teha tööd samal ajal,

koodi jupp, mis paneb helitu nupu töötama nii, nagu on oodatud (vt. koodinäide

private void soundMuteBtnClick(object sender, RoutedEventArgs e)

Page 15: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

15

else

{

videoElement.IsMuted = false;

soundIndicatorChange();

}

}

Koodinäide 6. Helitu nupu funktsioon

Iseenesest kood on väga lihtne. Alguses on deklareeritud funktsioon soundMuteBtnClick, mis

võtab vastu objekti saatja (sender) ja suunatud sündmust e.

VolumeIndUC.Visibility = Visibility.Visible; -- antud korraldus muudab heli indikaatori

komponendi nähtavaks. Edasi järgneb if-plokk, mis kontrollib, kui video elemendil on heli sees,

siis seda lülitakse välja ja pannakse heli indikaatori pikkust nulliks (vt. joonis 7). Tulemus on

selline:

Joonis 7. Heli indikatori komponent

Heli indikaatori komponent, mis näitab, et

video heli on välja lülitatud.

Edasi järgneb else osa, mis määrab seda, et kui kasutaja vajuta nupu teist korda, siis heli lülitakse

tagasi sisse ja kutsutakse välja funktsioon soundIndicatorChange, mis määrab heli tugevuse

indikaatori õige asukoha.

Programmeerimine Visual Studio’s on väga lihtne ja intuitiivne. Kui koodis juhtub viga või

näpukas, siis seda tõmmatakse punasega alla, nagu näiteks Microsoft Wordis, ja näidatakse ujuv

kast koos seletusega, mis on antud kohal kirjutatud valesti. Minu jaoks kõige mugavam Visual

Studio funktsioon on IntelliSense, mis pakub trükkimise ajal sobivad koodijupid, säästmaks

sellega programmeerija aega (vt. joonis 8).

Page 16: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

16

Joonis 8. Visual Studio IntelliSense

IntelliSense pakub

välja võimalikud

koodi jupid, muutes

programmeerimist

mõnusaks ja

kiiremaks

ülesandeks.

3.4. Rakenduse loomine: neljas etapp

Nüüd kui rakendus on valmis, jõudis õige aeg selleks, et teha seda avalikuks. Sellega ka teised

inimesed saavad seda katsetada. Microsoft pakub arendajatele tasuta võimaluse majutada

rakendusi oma serverites läbi Silverlight Streaming’u teenuse. Iga kasutaja saab 10Gb serveri

ruumi ja mugava veebiliidese oma lahenduste administreerimiseks. Selleks, et saada võimalust

antud teenust kasutada läheb vaja Windows Live ID’d, kuid juhul, kui inimene kasutab Windows

Live / MS� Messengeri või Hotmaili on see tal juba olemas.

Selleks, et laadida oma rakenduse üles, enne on vaja teha järgmist:

1. Luua fail manifest.xml ja lisada sinna järgmine koodi jupp (vt. koodinäide 7):

<SilverlightApp>

<version>2.0</version>

<source>MediaPlayer2.xap</source>

<width>800</width>

<height>557</height>

<background>white</background>

<isWindowless>false</isWindowless>

</SilverlightApp>

Koodinäide 7. Silverlighti rakenduse manifest

Antud kood määrab tehnoloogia versiooni, mille põhjal oli rakendus loodud. Antud juhul on

selleks Silverlight 2.0. Edasi määratakse allikas: MediaPlayer2.xap. XAP failid on arhiivid, kuhu

kompilaator pakib kõik rakenduses kasutatud failid. Lihtsustatult vaadates, XAP ongi meie

Page 17: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

Silverlighti rakendus. Järgmisena määratakse rakenduse suurust, tausta värvi ja kas rakendusel on

olemas eraldi aken, või mitte.

2. Pakkida .XAP fail ja

joonis 9).

Joonis 9. Silverlight Streamingu administreerimispaneel

Silverlight Streaming’u administreerimispaneel ja olemasoleva rakenduse üles laadimine.

seda, kui protsess on lõppenud,

selleks, et ta saaks lisada enda poolt loodud rakenduse oma veebisaidile või blogile.

Microsofti Silverlight Streaming

3.5. Töö käigus kasutatud tööriistad

Oma seminaritöö rakenduse loomise käigus kasutasin järgmiseid tööriistu:

1. Adobe Illustrator CS3

2. Microsoft Expression Design 2

3. Microsoft Expression Blend 2

4. Microsoft Visual Studio 2008 Professional Edition koos Service Pack 1

5. Microsoft Silverlight 2.0

Järgmisena määratakse rakenduse suurust, tausta värvi ja kas rakendusel on

olemas eraldi aken, või mitte.

ja manifest.xml zip arhiivi ja laadida see teenuse saidi kaudu

. Silverlight Streamingu administreerimispaneel

administreerimispaneel ja olemasoleva rakenduse üles laadimine.

seda, kui protsess on lõppenud, kasutaja saab lingi oma rakendusele ja vajalikud koodi jupid

enda poolt loodud rakenduse oma veebisaidile või blogile.

Microsofti Silverlight Streaming’u teenus asub aadressil: http://silverlight.live.com

Töö käigus kasutatud tööriistad

Oma seminaritöö rakenduse loomise käigus kasutasin järgmiseid tööriistu:

Adobe Illustrator CS3

Expression Design 2

Expression Blend 2 koos Service Pack 1

Visual Studio 2008 Professional Edition koos Service Pack 1

Microsoft Silverlight 2.0 Tools for Visual Studio 2008 SP1

17

Järgmisena määratakse rakenduse suurust, tausta värvi ja kas rakendusel on

ja laadida see teenuse saidi kaudu üles (vt.

administreerimispaneel ja olemasoleva rakenduse üles laadimine. Pärast

kasutaja saab lingi oma rakendusele ja vajalikud koodi jupid

enda poolt loodud rakenduse oma veebisaidile või blogile.

http://silverlight.live.com

Oma seminaritöö rakenduse loomise käigus kasutasin järgmiseid tööriistu:

Visual Studio 2008 Professional Edition koos Service Pack 1

Page 18: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

18

Kokkuvõte

Silverlight on uus Microsofti poolt välja töötatud tehnoloogia, mis võimaldab arendajatele luua

hämmastavaid veebirakendusi omadustega ja funktsioonidega, mis olid enne võimalikud ainult

lauarakenduste seas. Veelgi tähtsam on see, et sellised programmid on platvormist sõltumatud,

mis tähendab, et nad töötavad sama hästi nii PC, Maci, Linuxi ja tulevikus ka mobiiltelefoni peal.

Mõned võivad arvata, et Silverlight ei ole midagi enam, kui Microsofti versioon Flashist, kuid see

ei ole üldse nii. Silverlighti, kui tehnoloogia, arenduse abil olid toodud valdkonnale paljud

innovatsioonilised lahendused ning on ilmunud ka Flashile konkurents, mis tähendab seda, et

Adobe on sunnitud hakata looma uusi lahendusi. Sellest kõigest lõppude lõppuks võidavad

tavakasutajad, kuna tulevikus veeb annab meile võimalust teha selliseid asju, mille kohta praegu

me isegi ei unista.

Page 19: Microsoft Silverlight · jaoks, mis oleks suuteline töötama igal platvormil. Silverlight oli tõesti WPF’st loogiline samm edasi, ja kuna kõik tööriistad ja töövoog jäid

19

Kasutatud kirjandus

Microsoft. Kasutamise kuupäev: 21. 10 2008. a., allikas Microsoft Silverlight:

http://silverlight.net

Microsoft. Silverlight: WPF Compatibility. Kasutamise kuupäev: 21. 10 2008. a., allikas MSDN:

http://msdn.microsoft.com/en-us/library/cc903925(VS.95).aspx

Töö materjalid:

http://lin2.tlu.ee/~cgp2elt0/silverlight/