Microsoft Silverlight

Microsoft Silverlight är ett tilläggsprogram till webbläsare för visning av interaktiva webbapplikationer samt mediefiler, utvecklat av Microsoft. Silverlight tillhandahåller en del av animerings-, vektorgrafik- och mediefunktionaliteten som finns i Windows Presentation Foundation. Silverlight finns tillgängligt för Microsoft Windows och Mac OS, och för mobila enheter som använder plattformarna Windows Mobile och Symbian. Stöd för Linux och andra Unixliknande operativsystem utvecklades genom Moonlight-projektet, vilket dock lades ner i maj 2012.

Silverlight kallades tidigare Windows Presentation Foundation/Everywhere (WPF/E) och anses vara en konkurrent till Adobe Flash. Den konkurrerar även med Sun Microsystems JavaFX som lanserades några dagar efter Silverlight.

Gränssnittet för applikationer i Silverlight definieras med XAML och är vektorbaserat.

Överblick
Silverlight erbjuder ett grafiksystem liknande Windows Presentation Foundation och integrerar multimedia, datorgrafik, animeringar och interaktivitet i en och samma miljö. I Silverlightapplikationer är gränssnittet deklarerat i XAML och programmerat i en del av .NET. XAML kan användas för definiering av vektorgrafik och animeringar. Silverlight kan även användas för att skapa Windows Sidebar Gadgets för Windows Vista.

Silverlight har stöd för H.264-video, Advanced Audio Coding, Windows Media Video (WMV), Windows Media Audio (WMA) och MPEG Layer III (MP3)  i alla stöttade webbläsare utan något krav på Windows Media Player, någon ActiveX-kontroll för densamma eller något plugin för webbläsaren. Eftersom Windows Media Video 9 är en implementation av SMPTE VC-1-standarden så stöder Silverlight även VC-1-video.

Silverlight gör det möjligt att dynamiskt ladda in XML så att det kan manipuleras via ett DOM-gränssnitt, en teknik som är passande för konventionell programmering i Ajax. Silverlight har ett nedladdningsobjekt som kan användas för att ladda ner innehåll så som script, mediafiler eller annan data och som krävs av applikationen. I och med version 2 kan programmeringen skrivas i vilket språk som helt inom .NET, inklusive IronRuby och IronPython.

Mottagande
Microsoft Silverlight hade en penetration av marknaden på 73 procent (juni 2011), en ökning från 20 procent i mars 2009 och 55 procent i mars 2010. Adobe Flash är installerat på 97 procent av alla webbläsare vilket gör den marknadsledande. Även HTML5 erbjuder en del funktionalitet liknande den i Silverlight och Flash.

Versioner

Silverlight 1 
Silverlight 1 utvecklades under kodnamnet Windows Presentation Foundation/Everywhere (WPF/E) och släpptes 2007. Den består av följande komponenter: 
 Input — hantering av indata från tillbehör som tangentbord, mus och så vidare.
 UI core — hanterar rendering av bitmap-bilder (inklusive till exempel JPEG, vektorgrafik, text och animeringar).
 Media — uppspelning av MP3, WMA Standard, WMV7, WMV8 och WMV9/VC-1.
 XAML — låter gränssnittets layout skapas med hjälp av XAML markup. 

En Silverlight-applikation startas genom att en Silverlightkontroll anropas från en HTMLsida. Denna laddar sedan upp en XAML-fil. XAML-filen innehåller ett “Canvas”-objekt som fungerar som en behållare för andra element. Silverlight tillhandahåller olika geometriska enkla former så som linjer, ellipser med mera för element som texter, bilder och media. Elementen används för att skapa en önskad layout. Elementen kan animeras med hjälp av ”Event triggers. Sådant som tangentbordstryckningar eller musrörelser kan även aktivera event, som då kan hanteras av ett specialskrivet script.
Manipulation av gränssnittet kan uppnås genom användning av script för att manipulera Canvas-objektets DOM. För att underlätta detta finns ett speciellt API tillgängligt för alla scriptspråk som stöds av Silverlight.

Silverlight 2 
Silverlight 2 inkluderar en version av .NET-ramverket och implementerar samma fulla version av CLR som .NET 3.0. Därför kan den köra program skrivna i alla .NET-språk. 
XAML-filen som används för layout (.xaml ) kan utökas med bakomliggande kod, skriven i vilket .NET-språk som helst och som sedan innehåller den programmerbara logiken. Detta kan användas för att med kod manipulera både applikationen och HTML-sidan som innehåller Silverlight-kontrollen.  XAML-filen och den bakomliggande koden kompileras till .NET assembly som sedan komprimeras och lagras i en .xap fil.

.NET i Silverlight adderar en delmängd av modellen för gränssnittsprogrammering från WPF, inklusive stöd för former, dokument, media och animerade objekt. 
Det inkluderade BCL (Base Class Library) tillhandahåller klasser för samlingar, reflektioner, regulära uttryck (regular expressions), stränghantering och dataåtkomst. Det stöder även LINQ och serialisering av objekt. Silverlight kan hantera data i formaten RSS och JSON, utöver XML. BCL skapar även ett förbättrat stöd för XML, inklusive klasserna XMLReader och XMLWriter classes. Silverlight 2 har även stöd för asynkron programmering genom användning av trådning. och ListBox.
Silverlight inkluderar även klasser för dataåtkomst via webbtjänster, REST, Windows Communication Foundation (WCF) Services och ADO.NET Data Services.  Nätverksstödet i Silverlight kan användas av Silverlight-applikationer för att kommunicera via Hypertext Transfer Protocol (HTTP) eller på en lägre socket–nivå. Silverlight använder en XML-baserad konfigurationsfil för att kontrollera policys för åtkomst över flera domäner, både för HTTP och socket-kopplingar. Denna kan användas av administratören för att kontrollera vad en Silverlight-applikation får tillgång till när den applikationen inte härstammar från sidans egen domän. 

I och med integreringen av .NET så tillåter Silverlight även HTML-styrd interaktion vilket möjliggör manipulation av HTML DOM-element genom så kallad ”managed code”, och låter JavaScript användas för att anropa denna. Silverlight använder wrappers runt JavaScript-objekt och DOM-element för att göra dem tillgängliga för ”managed code”. 
Silverlight 2 inkluderar Deep Zoom, en teknologi som har sitt ursprung i Microsoft Live Labs' Seadragon. Det låter användaren zooma in eller ut ur en bild med mjuka övergångar genom att använda musens hjul. 

Mediafunktioner i Silverlight 2 inkluderar:
 Stöd för WMA , inklusive WMA 10 Pro.
 Innehållsskydd med hjälp av Microsoft PlayReady 
 Server-side playlists i Windows Media Services.
 Media Stream Source API.

Silverlight 3 
Silverlight 3 annonserades vid International Broadcasting Convention den 12 september 2008 i Amsterdam och visades upp för första gången vid MIX i Las Vegas den 18 mars 2009. 

Silverlight 3 inkluderar en ökad mängd kontroller. Exempelvis  DataGrid, TreeView, olika paneler för layout, DataForm och DataPager.  Dessutom inkluderar Silverlight 3 ett ramverk för navigation som låter Silverlight använda en hyperlänkad navigationsmodell utöver att använda “deep linking” och alltså länka till specifika sidor.

Inom mediaområdet så har Silverlight 3 stöd för Advanced Audio Coding (AAC)  och hårdvaruaccelererad H.264 video. Silverlight 3 erbjuder även streaming i 1080p. 
Silverlight 3 har även stöd för perspective 3Dsom möjliggör 3D-transformationer av 2D-element.Dessa transformationer är, precis som många olika 2D-operationer, hårdvaruaccelererade.
Installerade Silverlight 3-applikationer letar automatiskt efter uppdateringar asynkront vid varje upstart och uppdateringarna installeras automatiskt. Instanser av applikationerna som redan körs informeras även om att uppdateringar är tillgängliga.

Silverlight 4 
Vid Professional Developers Conference i Los Angeles den 18 november 2009 visade Microsoft för första gången upp en betaversion av Silverlight 4. Den slutgiltiga versionen släpptes den 15 april 2010, tillsammans med ett verktygspaket för utvecklare. Ny funktionalitet i Silverlight 4 inkluderar:

 Stöd för Google Chrome.
 Stöd för webbkamera och mikrofon.
 Stöd för utskrifter.
 Förbättrat stöd för mus, inklusive stöd för den högra musknappen och hjulet.
 Nytt stöd för att visa meddelanden till slutanvändaren.
 Nya och förbättrade kontroller, exempelvis RichTextBox och DatataGrid.
 Nytt stöd för att implicit sätta teman för kontroller.
 Nytt stöd för att rendera HTML inuti Silverlight.
Förbättringar av WCF datalager.
 Lokaliseringsförbättringar med dubbelriktad text.
 Stöd för Managed Extensibility Framework.
 Förbättrat stöd för databindning.
 Förbättrade animeringseffekter.
 Stöd för clipboard och “drag and drop”.
 Förbättringar i prestanda för Deep Zoom .
 WCF Rich internet application (RIA) Services.
 Innehållsskydd för H.264 samt stöd för offline-uppspelning av DRM-skyddad media.

Silverlight 5 
Den 2 december 2010, vid eventet Silverlight Firestarter, avslöjades det att en betaversion av Silverlight 5 skulle släppas under första halvan av 2011. Den slutgiltiga versionen är planerad att släppas under den andra delen av 2011.

Nya funktioner i Silverlight 5 är::

 Stöd för GPU-accelererad videodecoding. 
 Inbyggt stöd för 3D-grafik
 Variabel hastighet vid uppspelning av mediainnehåll med automatiskt pitch-kontroll.
 Inbyggt stöd för fjärrkontroll
 Stöd för snabbare uppstart av applikationer
 Stöd för 64-bits webbläsare
 Automatisk testning av användargränssnitt för applikationer med Visual Studio 2010.
Utvecklare kan avlusa data-binding expressions och sätta brytpunkter på bindings. 
Förbättringar av WCF RIA

Utvecklingsverktyg
Silverlight-applikationer kan skrivas i valfritt programmeringsspråk inom .NET. På grund av detta kan även de olika utvecklingsverktyg som fungerar för .NET-språk även fungera med Silverlight, förutsatt att de kan använda sig av Silverlight CoreCLR för att hosta applikationen, istället för .NET Framework CLR. Microsoft har positionerat Microsoft Expression Blend som ett bra verktyg tillsammans med Visual Studio för utveckling av användargränssnitt i Silverlight. Microsoft Visual Studio kan användas för att utveckla och avlusa Silverlight-applikationer.

Ett Silverlight-projekt innehåller filerna Silverlight.js och CreateSilverlight.js, vilka initialiserar en plug-in för användning i HTML-sidor, en XAML-fil för gränssnittet samt filer för bakomliggande kod.
Från och med släppet av Silverlight 2 så är även Eclipse ett alternativ som utvecklingsverktyg.

Mono Moonlight
En grupp för utveckling av mjukvara kallad Mono arbetar med ett projekt kallat Moonlight. Moonlight är en implementation av Silverlight 1 och 2 som fri mjukvara med öppen källkod.

Projektet är officiellt stöttad av Microsoft som   i en överenskommelse med Novell har lagt till specifikationer samt get Mono-gruppen tillgång till Silverlights klassbibliotek, APIer, binära codecs och testfall, inget av detta är tillgängligt för allmänheten.

Kompatibilitet

Fotnot:
 Opera kommer att få officiellt stöd i en framtida version. Dock finns ett ej officiellt hack som ger stöd 
 På Linux^ kommer funktionen att möjliggöras via tredjepartsprogrammet Moonlight. Moonlight kommer att fungera på de flesta Linux-distributioner med stöd för Firefox, Konqueror och Opera. 
 Silverlight for Mobile kommer att användas för att köra Silverlight-innehåll på mobila enheter. Den första CTP för Windows Mobile 6 släpps under andra kvartalet 2008. Nokia har meddelat att de har planer på att införa Silverlight for Mobile tillgänglig på S60 Symbian OS såväl som för Series 40 och en del av Nokias övriga handdatorer. Silverlight for Mobile kommer att stöda Silverlight 1.0-innehåll.
 Andra plattformar kommer även att få den möjligheten.

Versioner

Kritik

Stämning
Den 2 juli 2008 stämde mjukvaruföretaget Gotuit Media, Microsoft för tre fall av patentintrång i Silverlight. Patenten handlar om tekniken för att möjliggöra sökning av videoklipp på Internet. Genom att implementera taggning i delar av filmen blir det möjligt för tittaren att leta sig fram till den del av filmen personen vill se på. Tekniken har redan använts på olika sidor som Sports Illustrateds och NHL.

Enligt Gotuit Media har Microsoft planer på att använda tekniken på bland annat NBCOlympics.com. Gotuit Media begär att domstolen stoppar användningen av tekniken och påtvingar Microsoft att ersätta Gotuit Media för påstådda förluster.

Silverlight har kritiserats för att hindra operativsystemet Linux från att fungera med Silverlight. Fastän Microsoft arbetar på projektet Moonlight för att möjliggöra den funktionaliteten, har Bruce Chizen, tidigare VD på Adobe, ställt frågan varför "Microsoft valt att utesluta Silverlight-plattformen på något annat operativsystem förutom Windows".  Hans anklagelser baseras på "exempel från förr" där han menar att Microsoft har lanserat produkter med fullt stöd och pågående kompatibilitet över multiplattformer som inte längre stöds. 

Microsoft har också kritiserats för att inte använda SVG (Scalable Vector Graphics), skalbar vektorgrafik som standard i Silverlight, vilket enligt Ryan Paul på Ars Technica, jämför med Microsofts sätt att ignorera öppen standard i övriga produkter. Hur som helst påstår David Betz, en teknologispecialist för .NET, att Microsoft skulle ha behövt att förändra SVG-specifikationen för att tillfoga .NET-integration, och gränssnittstankeskapelser ovanpå SVG som gör den passande för scenarion Silverlight, använder markupen för
(gränssnitts- och vektormarkup som standard). Därför är "valet gjort av Microsoft att använda XAML istället för skalbar vektorgrafik, tjänade att behålla skalbar vektorgrafik som standard, genom att inte tillfoga privat teknologi [att fördjupa skalbar vektorgrafik] ”. Han fortsätter,

"Silverlight kan också användas för att visa Windows Presentation Foundation (WPF), en .NET 3.0-teknologi och inte en ny baserad teknologi på Internet. Därför har det betydelse att Silverlight använder XAML istället för SVG. Om Silverlight baserades på SVG, skulle ett gap mellan Silverlight och .NET Framework uppstå, men Silverlights användning av XAML gör den till en del av .NET-familjen. Därför är det att i verkligheten tänka på att elementen i XAML vanligtvis visar objekt i .NET Framework; vilket inte vore möjligt med SVG." 

Silverlight har även fått kritik för att det tvingar datoranvändare som besöker Microsofts webbplatser att installera programmet för att visa flash-filmer och utökade funktioner på webbplatserna. Ett exempel kan vara repeterande rutor som visas när man besöker någon av Microsofts webbplatser.

Silverlight läggs ner
Microsoft gick ut med ett officiellt uttalande 2013 att Microsoft Silverlight ej längre kommer att utvecklas från årsskiftet.

Referenser

Noter

Källor
Microsoft Silverligt läggs ner

Externa länkar

Silverlight produktsida hos Microsoft.com
Silverlight Developers Center hos MSDN
Silverlight Hosting hos Windows Servers
What's new in Silverlight 5 Demos och exempel

Microsoft
Programvaror 2007
Webbutveckling