Silverlight - Hvad jeg lærte til Microsoft konferencen

I går holdt Microsoft en endags konference i Cinemaxx med fokus på Silverlight, og da det er lanceret som Microsofts bud på et Flash-lignende plugin, så var det naturligt at tage med og smugkigge lidt.

Hvad er Silverlight?
For at starte med starten, så er Silverlight et nyt plugin til browseren, der baserer sig på WPF (Windows Presentation Foundation), og som gør det muligt via XAML (XML baseret spog til definering af objekter) at vise lækre grafiske ting direkte i browseren.
Alt i alt meget ligesom Flash, men med primært fokus på kode, og eksempelvis generer de grafiske programmer også XAML, fremfor eksempelvis eps, jpg eller lignende.

Silverlight 1.0 RC

Den første version af Silverlight er i øjeblikket ude som RC (Release Candidate) og er dermed næsten helt færdig, og på konferencen blev der vist eksempler på hvordan man udviklede løsninger til den version, hvilket primært foregik via JavaScript.

Jeg har ikke tænkt mig at gå ned i dybere detaljer om hvordan man gør, men mere komme med et par eksempler på hvor den adskiller sig væsentligt fra Flash, og hvad jeg ser som styrker og svagheder.

- Håndtering af fonte
Da en Silverlight applikation kun består af ren XAML kode, så kan den ikke inkludere andre ting i samme fil, eksempelvis fonte.
Det betyder at man selv skal zippe eventuelle specielle skrifttyper og loade dem ind. Det er egentlig relativt enkelt, men efter at man har loadet dem, så skal man for hvert enkelt tekstfelt som bruger den pågældende skrifttype selv assigne fonten til tekstfeltet, ellers virker det ikke.

Det betyder så også at man loader hele fonten, ikke kun de tegn man benytter, hvilket de fremførte som en fordel da det jo er super besværligt at embedde. Personligt har jeg det nok lige omvendt, jeg hader spild, og det er altså spild at loade 500 tegn hvis man kun bruger 20.

Alt i alt temmelig omstændigt, og hvad siger producenterne af skrifttyper egentlig til at man på den måde videre-distribuerer dem til alle ens brugere i ttf-format?

- Unikke navne
Hvor objekt-navne i Flash bare skal være unikke for det niveau objektet er på, så skal de i Silverlight være unikke på tværs af hele projektet. Fordelen ved det er, at man fra roden af kan kalde en funktion med det unikke id og så få returneret en reference til det, uanset hvor det er i projektet.

Ulempen er jo at to ting ikke kan hedde det samme, på trods af at de eksisterer på forskellige niveauer, og det synes jeg personligt er en kæmpe ulempe, da det jo strider meget imod den objekt orienterede tankegang.

- Uafhængige tidslinier
En ting som jeg til gengæld synes var smart, var muligheden for uafhængige tidslinier. Ja, ved ikke om uafhængige er det rigtige ord, men lad mig prøve at forklare.

Tidslinie A flytter Objekt 1 fra 0 til 10.
Tidslinie B flytter Objekt 1 fra X til 20.
Tidslinie C flytter Objekt 1 fra X til 40.

Med andre ord, tidslinie B og C tager sit udgangspunkt i tidslinie A, sådan så man for eksempel på baggrund af en if-sætning kan afgøre om den skal gøre det ene eller andet, og ændrer man senere på Tidslinie A, så skal man ikke rette noget i B og C.

Noget lignende er naturligvist også muligt at gøre i Flash via ActionScript, men her kan man gøre det direkte på sin tidslinie i Blend.

- Ingen inputfelter
Ja, det er rigtigt, i Silverlight 1.0 er der INGEN, jeg gentager INGEN input-felter.

Har man brug for at brugerne kan indtaste data, så er man nød til at lave et input-felt i html, placere det hvor man nu vil via css og koble det op på sin Silverlight applikation via JavaScript.

Ikke særligt elegant, og manden fra Microsoft gav da også udtryk for at det er noget som skulle komme i version 1.1, omend det ikke er med i den nuværende Alpha release.

Silverlight 1.1
Det lyder som om at Microsoft allerede har erkendt at 1.0 ikke rigtigt slår igennem med de mangler som den har, blandt andet er det jo svært at tiltrække eksisterende .Net-udviklere, hvis man kun kan programmere sine applikationer i JavaScript.

Derfor var der også et langt indlæg om det nye 1.1 version som i øjeblikket er i Alpha.

- CLR (Common Language Runtime)
Den utvivltsomt største nyhed i 1.1 er at den har et CLR, der gør det muligt at afvikle “serverkode” ude på klienten.

Med andre ord, så kan .Net-udviklere skrive en Silverlight applikation i eksempelvis C#, herunder også med komplet Intellisense i Visual Studio, og det tror jeg virkelig vil rykke, da det vil gøre springet fra at skrive web applikationer, eller traditionel software for den sags skyld, og til at skrive Silverlight applikationer meget lille.

Der er sikkert også andre nye ting i 1.1, men CLR var det eneste de rigtigt fremhævede på konferencen.

Status på Flash vs Silverlight
Nå, og så til fornemmelsen i maven: Efter konferencen, hvordan ser jeg så på kampen mellem Flash og Silverlight?

Jeg ser sådan på det at Flash ikke for alvor skal føle sig truet det første års tid, men at Silverlight på den lidt længere bane absolut har potentiale.

Når det så er sagt, så ser jeg ikke det ene erstatte det andet.
Silverlight ser for mig ud til at være ekstremt godt til data-intensive ting, da de udviklere som normalt arbejder med de tunge data kan tage dem direkte med derind, mens Flash vil være bedre til projekter hvor der er mere fokus på oplevelsen.



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

Kommentarer:

  1. Mikael Ørting Kristiansen siger: (1. oktober 2007 kl. 23:43 )

    Hej Mads
    Tak for referatet fra konferencen. Jeg overvejede selv at deltage, men fik ikke tid til det. Jeg regnede heller ikke med, at Silverlight ville blive noget, jeg kommer til at bruge lige foreløbig, men jeg glæder mig da til at se, hvad det udvikler sig til.

Skriv en kommentar