Jump to content

Microsoft Silverlight: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
VolkovBot (talk | contribs)
m robot Modifying: de:Microsoft Silverlight
No edit summary
Line 14: Line 14:
| website = [http://www.microsoft.com/silverlight/default.aspx Microsoft Silverlight]<br/>[http://www.silverlight.net Silverlight.net]
| website = [http://www.microsoft.com/silverlight/default.aspx Microsoft Silverlight]<br/>[http://www.silverlight.net Silverlight.net]
}}
}}
'''Microsoft Silverlight''' is proof that [[Microsoft]] has given up.
'''Microsoft Silverlight''' is a [[web browser|browser]] [[plugin]] that allows [[web application]]s to be developed with features like [[animation]], [[vector graphics]], and [[multimedia|audio-video playback]] - features that characterize a [[rich internet application]]. Silverlight competes with products such as [[Adobe Flash]], [[Adobe Flex]], [[Adobe Shockwave]], [[Java FX]], and [[Apple QuickTime]]. Version 2.0 brought improved [[interactivity]] and allows developers to use [[.NET languages]] and [[Integrated Development Environment|development tools]] when authoring Silverlight applications.

Silverlight was developed under the codename '''Windows Presentation Foundation/Everywhere''' ('''WPF/E'''). It [[#Compatibility|is compatible with]] multiple web browser products used on [[Microsoft Windows]] and [[Mac OS X]] [[operating system]]s. A third-party [[free software]] implementation named [[Moonlight (runtime)|Moonlight]] is under development to bring compatible functionality to [[GNU]]/[[Linux]]. Mobile devices, starting with [[Windows Mobile 6]] and [[Symbian]] (Series 60) phones, will also be supported.<ref name="sl4mobile"/>

==Overview==
Silverlight provides a [[Retained mode|retained mode graphics system]], similar to [[Windows Presentation Foundation|WPF]] and integrates [[multimedia]], [[Computer graphics|graphics]], [[animation]]s and [[interactivity]] into a single runtime. It is being designed to work in concert with [[Extensible Application Markup Language|XAML]] and is scriptable with [[JavaScript]]. [[XAML]] can be used for [[Mark-up language|marking up]] the [[vector graphics]] and [[animations]]. Textual content created with Silverlight would be more searchable and [[Index (search engine)|indexable]] than that created with [[Adobe Flash|Flash]] as it is not [[Compiled language|compiled]], but represented as text ([[Extensible Application Markup Language|XAML]]).<ref>{{cite web | url = http://www.webware.com/8301-1_109-9714748-2.html | title = What is Silverlight, really? | author = Rafe Needleman | accessdate = 2007-05-05}}</ref> Silverlight can also be used to create [[Windows Sidebar]] [[Microsoft Gadgets|gadgets]] for [[Windows Vista]].<ref>{{cite web | url = http://blogs.msdn.com/charles_sterling/archive/2007/05/14/writing-a-windows-sidebar-gadget-in-silverlight-dead-simple.aspx | author = Charles Sterling | publisher = [[MSDN]] Blogs | accessdate = 2008-03-09 | title = Writing a Windows Sidebar Gadget in Silverlight dead simple}}</ref>

Silverlight supports playback of [[Windows Media Video|WMV]], [[Windows Media Audio|WMA]] and [[MPEG Layer III|MP3]] media content<ref>[http://www.microsoft.com/silverlight/faq.aspx Silverlight FAQs]</ref> across all supported browsers without requiring [[Windows Media Player]], the [[Windows Media Player]] [[ActiveX]] control or [[Windows Media]] browser plugins. Because [[Windows Media Video|Windows Media Video 9]] is an implementation of the [[Society of Motion Picture and Television Engineers|SMPTE]] [[VC-1]] standard, Silverlight also supports VC-1 video, though still only in an ASF file format. Furthermore, the [[Software license agreement]] says VC-1 is only licensed for the "personal and non-commercial use of a consumer".<ref>{{cite web | url= http://www.microsoft.com/silverlight/license-win.aspx | title = Microsoft Silverlight 1.0 beta license | accessdate = 2007-06-14}}</ref>

Silverlight makes it possible to dynamically load [[XML]] content that can be manipulated through a [[Document Object Model|DOM]] interface, a technique that is consistent with conventional [[Ajax (programming)|Ajax]] techniques. Silverlight exposes a ''Downloader'' object which can be used to download content, like scripts, media assets or other data, as may be required by the application.<ref>{{cite web | url = http://msdn2.microsoft.com/en-us/library/bb232904.aspx | title = Using a Downloader Object | accessdate = 2007-05-25}}</ref> With version 2.0, the programming logic can be written in any [[Microsoft .NET|.NET]] [[List of .NET languages|language]], including some common [[dynamic programming language]]s like [[Ruby (programming language)|Ruby]] and [[Python (programming language)|Python]].<ref name="Silverlight benefits"> [http://arstechnica.com/news.ars/post/20070507-mono-developers-to-bring-silverlight-to-linux.html Mono developers to bring Silverlight to Linux] </ref>

==Compatibility==
{| class="wikitable" width="100%"
!OS/Browser!![[Internet Explorer 6|IE 6]] SP1!!IE 6 SP2!![[Internet Explorer 7|IE 7]]!![[Firefox]]/[[SeaMonkey]]/[[Mozilla]]!![[Safari (web browser)|Safari]]!!Konqueror!!Opera
|-
|Windows Vista||N/A||N/A||1.0, 2.0||1.0, 2.0||1.0, 2.0; via [[NPAPI]]||N/A||Unofficially<ref name="OperaWatch"/><ref name="OperaHack"/>
|-
|Windows Server 2003||N/A||1.0, 2.0||1.0, 2.0||1.0, 2.0||1.0, 2.0; via [[NPAPI]]||N/A||Unofficially<ref name="OperaWatch"/><ref name="OperaHack"/>
|-
|Windows XP||N/A||1.0, 2.0||1.0, 2.0||1.0, 2.0||1.0, 2.0; via [[NPAPI]]||N/A||Unofficially<ref name="OperaWatch"/><ref name="OperaHack"/>
|-
|Windows 2000||Planned 2.0||N/A||N/A||Planned 2.0||N/A||N/A||Planned<ref name="OperaWatch"/>
|-
|Mac OS X 10.4.8+ PPC||N/A||N/A||N/A||1.0||1.0||N/A||Planned<ref name="OperaWatch"/>
|-
|Mac OS X 10.4.8+ Intel||N/A||N/A||N/A||1.0, 2.0||1.0, 2.0||N/A||Planned<ref name="OperaWatch"/>
|-style="background:#dcdcdc"
|{{anchor|LinuxVer}}Linux x86<sup>[[#LinuxInfo|(Moonlight)]]</sup>||N/A||N/A||N/A||Planned<ref name="Moonlight"/><ref name="msnovell"/>||N/A||Planned<ref name="msnovell">{{cite web | url = http://tirania.org/blog/archive/2007/Sep-05.html | title = Microsoft/Novell Collaboration on Silverlight. | accessdate = 2007-09-05}}</ref>||Planned<ref name="OperaWatch"/><ref name="msnovell"/>
|-style="background:#dcdcdc"
|Linux [[x86-64]]<sup>[[#LinuxInfo|(Moonlight)]]</sup>||N/A||N/A||N/A||Planned<ref name="Moonlight"/><ref name="msnovell"/>||N/A||Planned<ref name="msnovell"/>||Planned<ref name="OperaWatch"/><ref name="msnovell"/>
|}
Notes:
* [[Opera (web browser)|Opera]] will be officially supported with future builds.<ref name="OperaWatch">{{cite web | url = http://operawatch.com/news/2007/05/more-details-on-silverlight-support-in-opera.html | title = Opera Watch: More details on Silverlight support in Opera| accessdate=2007-05-02}}</ref> Unofficially it supports it already, via a hack <ref name="OperaHack">{{cite web | url = http://blog.crazyboomerang.com/2007/12/silverlight-in-opera.html | title = Silverlight in Opera| accessdate=2008-03-10}}</ref>
*{{anchor|LinuxInfo}}On Linux<sup>[[#LinuxVer|^]]</sup>, the functionality will be made available via the compatible third-party [[Moonlight (runtime)|Moonlight]] runtime.<ref name="Moonlight">{{cite web | url = http://weblogs.asp.net/scottgu/archive/2007/09/04/silverlight-1-0-released-and-silverlight-for-linux-announced.aspx | title = Silverlight 1.0 Released and Silverlight for Linux Announced | accessdate = 2007-09-05}}</ref><ref name="msnovell"/> Moonlight will be available for the major [[Linux]] distributions, with support for [[Firefox]], [[Konqueror]], and [[Opera (web browser)|Opera]] browsers.
* Silverlight for Mobile will be used to run Silverlight content on mobile devices. The first CTP for [[Windows Mobile 6]] will be released in 2nd Quarter of 2008.<ref name="sl4mobile">{{cite web | url = http://silverlight.net/learn/mobile.aspx | title = Silverlight for Mobile | publisher = Silverlight.net | accessdate = 2008-03-09}}</ref> [[Nokia]] has announced plans to make Silverlight for Mobile available for [[S60 platform|S60]] on [[Symbian OS]], as well as for [[Series 40]] devices and Nokia Internet tablets.<ref>
{{cite journal
| title = Nokia to enable Silverlight
| journal = blog.anta.net
| date = [[2008-03-04]]
| url = http://blog.anta.net/2008/03/04/nokia-to-enable-silverlight/
| issn = 1797-1993
| accessdate = 2008-03-04 }}
</ref> Silverlight for Mobile will initially support Silverlight 1.0 content.<ref name="sl4mobile"/>
* Additional platforms are being considered as well.<ref>{{cite web | url = http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=988552&SiteID=1 | title = MSDN Forums Silverlight General Discussion: Linux support | author = Joe Stegman | accessdate=2007-04-29}}</ref>

==Versions==
{| class="wikitable" align="center"
!Version Name!!Version Number!!Release Date
|-
|1.0 [[Community Technology Preview|CTP]]||1.0.?||[[December 2006]]
|-
|1.0 [[Software release life cycle#RTM or RTW|RTW]]||1.0.20816||[[2007-09-05]]
|-
|2.0 Pre-Release<br/>(As [http://msdn2.microsoft.com/en-us/silverlight/bb419317.aspx 1.1 Alpha September Refresh])||1.1.20926.0||[[2007-09-05]]
|-
|1.0 service release||1.0.21115.0||[[2007-11-20]]
|-
|2.0 Beta 1<ref name="sl2preview"/><ref name="slupdate">{{cite web | url = http://blogs.msdn.com/somasegar/archive/2007/11/29/quick-update-on-silverlight.aspx | title = Quick update on Silverlight | accessdate = 2007-11-30}}</ref>||2.0.30226.2||[[2008-03-05]]
|}

===Silverlight 1.0===
[[Image:SilverlightGame.PNG|thumb|right|A Silverlight 1.0 application hosted in [[Internet Explorer]]. Interactivity is provided by Silverlight, but user input controls are HTML controls overlaid on top of Silverlight content]]
Silverlight 1.0 consists of the core presentation framework, which is responsible for UI, interactivity and user input, basic UI controls, graphics and animation, media playback, [[Digital rights management|DRM]] support, and [[Document Object Model|DOM]] integration.<ref name="Architecture">{{cite web | url = http://msdn2.microsoft.com/en-us/library/bb404713.aspx | title = Silverlight architecture | accessdate = 2007-06-05}}</ref> It is made up of the following components:
*Input – handling input from devices like keyboard, mouse, stylus etc.
*UI core – managing rendering of bitmap images (including compressed raster images like [[JPEG]]), vector graphics, text and animations.
*Media – playback of [[MP3]], [[Windows Media Audio|WMA]] Standard, WMV7, WMV8 and WMV9/VC-1 streams.
*[[XAML]] – to allow the UI layout to be created using [[XAML]] markup language.

A Silverlight application starts by invoking the Silverlight control from the HTML page, which then loads up a [[XAML]] file. The XAML file contains a ''Canvas'' object, which acts as placeholder for other elements. Silverlight provides various geometrical primitives like lines, ellipses and other shapes, to elements like text, images, and media etc. The elements are properly positioned to achieve the desired layout. Any arbitrary shape can be created as well. These elements can be animated using ''Event triggers''; some animation effects are predefined, others can be created as composite of the pre-defined effects. Events like keyboard or mouse movements can also raise ''Events'' which can be handled by custom scripts.<ref>{{cite web | url = http://silverlight.net/quickstarts/silverlight10/default.aspx | title = Silverlight 1.0 Beta QuickStart | accessdate = 2007-06-05}}</ref>

Programmatic manipulation of the UI is achieved by using scripting languages to modify the [[Document Object Model]] of the Silverlight Canvas object.<ref name="Architecture"/> To facilitate this, Silverlight exposes a [[Document Object Model|DOM]] API, accessible from any scripting language supported by Silverlight, which in version 1.0 release is limited only to JavaScript running in the browser. However, there are no UI widgets built in. The native widgets of the browser must be overlaid on top of the Silverlight ''Canvas'' for user input. Support for data formats is limited to [[POX]] (Plain Old [[XML]]) and [[JSON]] only.<ref name="Architecture"/>

===Silverlight 2===
[[Image:SilverLight.PNG|thumb|right|A Silverlight 2 application hosted in [[Internet Explorer]]]]

Silverlight 2 (previously referred to as version 1.1)<ref name="slroadmap"/> includes a version of the [[.NET Framework]], implementing the same full [[Common Language Runtime]] version as [[.NET Framework]] 3.0; so it can execute any .NET language including [[Visual Basic .NET|VB.NET]] and [[C Sharp (programming language)|C#]] code. Unlike the CLR included with .NET Framework, multiple instances of the CoreCLR included in Silverlight can be hosted in one process.<ref>{{cite web | url = http://blogs.msdn.com/jasonz/archive/2007/05/10/side-by-side-in-process-clrs-start-with-silverlight.aspx | title = Side by Side In Process CLRs Start with Silverlight | accessdate=2007-05-12}}</ref> With this, the XAML layout markup file (''.xaml file'') can be augmented by [[code-behind]] code, written in any .NET language, which contains the programming logic. It can be used to programmatically manipulate both the Silverlight application and the HTML page which hosts the Silverlight control. The XAML markup as well as the code, is compiled into [[.NET assembly|.NET assemblies]] which are then compressed using [[ZIP (file format)|ZIP]] and stored in a <code>.xap</code> file.<ref>{{cite web | url = http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-1-creating-quot-hello-world-quot-with-silverlight-2-and-vs-2008.aspx | title = Silverlight Tutorial Part 1: Creating "Hello World" with Silverlight 2 and VS 2008 | author = Scott Guthrie | accessdate = 2008-02-24}}</ref>

Silverlight ships with a lightweight class library which features, among others, extensible [[GUI Widget|controls]], [[Web service|XML Web Services]], [[Computer networking|networking]] components and [[Language Integrated Query|LINQ]] [[Application Programming Interface|APIs]]. This class library is a subset of and is considerably smaller than [[.NET Framework|.NET Framework's]] [[Base Class Library]]. Silverlight code runs in a sandbox which prevents invoking platform APIs.<ref>{{cite web | url = http://www.channelregister.co.uk/2007/05/01/ms_silverlight_v_adobe_flash/ | title = Microsoft polishes the Silverlight | accessdate=2007-05-02}}</ref> Silverlight 2.0 also adds support for [[Digital rights management|DRM]] in media files.<ref name="Architecture"/>

[[Image:SLSkin.PNG|thumb|right|A set of Silverlight controls rendered with different skins]]
The version of .NET Framework in Silverlight adds<ref name="Architecture"/> a subset of [[Windows Presentation Foundation|WPF]] UI programming model, including support for shapes, documents, media and animation objects of WPF. However, the set of UI controls Silverlight ships with the alpha release is very limited, with no support for databinding. However, the Beta 1 release<ref name="sl2preview"/> will add more than 20 UI controls<ref name="slupdate"/> (including <code>TextBox</code>, <code>CheckBox</code>, <code>Slider</code>, <code>ScrollViewer</code>, and <code>Calendar</code> controls, among others),<ref name="sl2preview"/> add two-way databinding support, automated layout management (<code>StackPanel<code>, <code>GridPanel</code> etc)<ref name="sl2preview"/> as well as data manipulation controls such as [[Grid view|DataGrid]]<ref name="SGSilverlight">{{cite web | url = http://weblogs.asp.net/scottgu/archive/2007/05/07/silverlight.aspx | title = Silverlight| accessdate=2007-05-12}}</ref><ref name="slroadmap">{{cite web | url = http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx | title = .NET Web Product Roadmap (ASP.NET, Silverlight, IIS7) | accessdate = 2007-11-30}}</ref> and ListBox.<ref name="sl2preview">{{cite web | url = http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx | title = First Look at Silverlight 2| author = Scott Guthrie | accessdate = 2008-02-24}}</ref> UI controls are skinnable using a template-based approach.<ref name="sl2preview"/> Third party libraries for expanded sets of UI controls are being made available for the alpha release as well.<ref>{{cite web | url = http://blogs.msdn.com/tims/archive/2007/06/22/some-great-silverlight-controls.aspx | title = Some Great Silverlight Controls | author = Tim Sneath | accessdate = 2007-06-30}}</ref>

[[Image:Microsoft Silverlight stack.svg|thumb|left|250px|Silverlight 2.0 Architecture]]
The included Base Class Library (BCL) provides classes for [[Collection class|collections]], [[Reflection (computer science)|reflection]], [[regular expression]]s, [[string handling]] and [[data access]]. It also supports [[Language Integrated Query|LINQ]], with the full support for LINQ to Objects and [[Language Integrated Query#Language features|expression trees]]. Almost all of the ''System.LINQ'' and ''System.LINQ.Expression'' namespaces are exposed. However, LINQ to XML is not present in the Alpha release;<ref>{{cite web | url = http://blogs.msdn.com/bclteam/archive/2007/05/02/linq-support-in-silverlight-1-1-alpha-kim-hamilton.aspx | title = Linq Support in Silverlight 1.1 Alpha | author = Kim Hamilton | accessdate = 2007-06-08}}</ref> it debuted with the beta 1 release.<ref name="sl2preview"/> It also supports [[serialization]] of objects, for [[Persistent data structure|data persistence]]. Silverlight can handle data in either [[RSS]], [[POX]], and [[JSON]] formats, in addition to [[XML]]. The BCL provides enhanced support for working with [[XML]] data, including the ''XMLReader'' and ''XMLWriter'' classes.

Silverlight also includes classes for [[data access]] over XML-based [[Web services]] ([[POX]]), [[REST]] and [[Windows Communication Foundation|WCF Services]]. The networking support in Silverlight can be used by Silverlight applications to communicate over [[HTTP]]. While in the alpha release of Silverlight 2, cross domain communication is not allowed,<ref>{{cite web | url = http://dotnetaddict.dotnetdevelopersjournal.com/silverlight_beta_or_alpha.htm | title = Silverlight v1.0 Beta vs. Silverlight 1.1 Alpha - Huh?? | author =Kevin Hoffman | accessdate = 2007-06-11}}</ref> the beta 1 release adds support for the same.<ref name="slroadmap"/>. Silverlight uses an [[XML]]-based format to control the cross-domain resource access policy. It can be used by site administrators to control which resources a Silverlight application, that did not originate in the domain of the site, can access. In addition, Silverlight also supports the [[Adobe Flash]] cross domain policy file format.<ref>{{cite web | url = http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-3-using-networking-to-retrieve-data-and-populate-a-datagrid.aspx | title = Silverlight Tutorial Part 3: Using Networking to Retrieve Data and Populate a DataGrid | author = Scott Guthrie | accessdate = 2008-02-24}}</ref> Silverlight 2, starting from Beta 1 release, also adds support for network communication using [[Internet socket|socket]]s, over both [[IPv4]] and [[IPv6]].<ref name="sockcomments"/><ref name="sl2preview"/> Silverlight 2.0 also supports asynchronous programming via the use of the threading libraries.<ref name="SGSilverlight"/> However, Silverlight sockets are more restricted - they can connect back only to the host that originally served the application, and the port runber is restricted to 4502 through 4532.<ref name="sockcomments"/><ref>{{cite web | url = http://weblogs.asp.net/mschwarz/archive/2008/03/07/silverlight-2-and-sockets.aspx | title = Silverlight 2 and System.Net.Sockets.Socket | author = Michael Schwarz | accessdate - 2008-03-12}}</ref> Future releases will relax the port number restrictions and also enable cross-domain communication using sockets.<ref name="sockcomments">{{cite web | url = http://weblogs.asp.net/mschwarz/archive/2008/03/10/silverlight-socket-comments.aspx | title = Silverlight Socket Comments | author = Michael Schwarz | accessdate = 2008-03-12}}</ref> Silverlight sockets can only initiate a connection, they cannot listen for connections.<ref name="sockcomments"/>

[[Image:SilverLightMS.PNG|thumb|right|A [[Python (language)|Python]] [[interpreter (computing)|interpreter]] in Silverlight 2 hosted in [[Mozilla Firefox]]]]
Silverlight 2 supports the [[Dynamic Language Runtime]] (DLR) which allows dynamic compilation and execution of dynamic (scripting) languages. However, DLR is not integrated with the Silverlight distribution; a separate extention called ''Dynamic Silverlight'' (DSL) needs to be installed.<ref>{{cite web | url = http://blogs.zdnet.com/microsoft/?p=1257 | title = New Silverlight 2 extension adds support for dynamic languages | author = Mary Jo Foley | accessdate = 2008-03-12}}</ref> The language-specific modules can be packaged with the DSL app in the <code>.xap</code> package.<ref name="dsl">{{cite web | url = http://www.iunknown.com/2008/03/dynamic-silverl.html | title = Dynamic Silverlight, Part 1: Hello World | author = John Lam | publisher = [[MSDN]] Blogs | accessdate = 2008-03-12}}</ref> The DSL SDK includes a [[web server]] named ''Chiron'' that can dynamically package all the dependencies for the DSL application and serve it to the browser.<ref name="dsl"/> The first upcoming languages written for the DLR are [[JScript|Managed JScript]], [[IronPython]] 2.0, and [[IronRuby]]. Microsoft also plan to build [[Visual Basic .NET#Visual Basic 'VBx' (VB 10.0)|Visual Basic .NET 10.0 (VBx)]] on the DLR. All four languages share the same infrastructure to allow Silverlight to compile and execute the language source. Conversely, other .NET languages must be compiled ahead of time and delivered to Silverlight as .NET assemblies. The implementation of Managed JScript conforms to the [[ECMAScript]] 3.0 specification, and Microsoft claims that it is 250 times faster than interpreted JScript.<ref name="SGSilverlight"/>

With the integration of .NET Framework, Silverlight also allows HTML-[[managed code]] interaction, which allows manipulation of [[HTML]] [[Document Object Model|DOM]] elements from [[managed code]],<ref name="Architecture"/> as well as allow JavaScript code to call managed code and use objects instantiated by managed code. Silverlight encloses [[JavaScript]] objects and [[Document Object Model|DOM]] elements in managed wrappers to make them available from managed code.<ref name="dthorpe">{{cite web | url = http://blogs.msdn.com/dthorpe/archive/2007/05/02/mix07-extending-the-browser-programming-model-with-silverlight.aspx | title = MIX07: Extending the Browser Programming Model with Silverlight | accessdate=2007-05-03 | date = 2007-05-02 | author = Danny Thorpe}}</ref> However, in the 1.1 alpha release directly calling JavaScript code is not implemented, but managed code events can fire JavaScript handlers. A Silverlight instance does not need to have a UI component in order to manipulate the HTML DOM from managed code.<ref>{{cite web | url = http://blogs.msdn.com/tims/archive/2007/06/07/silverlight-isn-t-just-about-presentation.aspx | title =Silverlight isn't just about presentation | accessdate = 2007-06-13 | author = Tim Sneath | date = 2007-06-07}}</ref> It is done by creating a XAML ''Canvas'' with its width and height set to zero, and using its code-behind code to modify the [[Document Object Model]] of the HTML page via the APIs in the ''System.Browser'' namespace.<ref>{{cite web | url = http://blogs.msdn.com/tims/archive/2007/06/13/programming-html-with-c.aspx | title = Programming HTML with C# | author = Tim Sneath | accessdate = 2007-06-30 | author = Tim Sneath | date = 2007-06-13}}</ref>

[[Image:DeepZoom.PNG|thumb|right|A Silverlight 2 application using DeepZoom running in [[Safari (web browser)|Safari 3.1]] on [[Windows XP]]]]
Silverlight 2 includes [[Deep Zoom]], a technology derived from [[Microsoft Live Labs Photosynth]]. It allows users to zoom into or out of an image (or a collage of images), with smooth transitions, using the mouse wheel.<ref>{{cite web | url = http://www.liveside.net/blogs/main/archive/2008/03/06/silverlight-2-and-deep-zoom-get-ready-to-build-your-own-photozooming-collections.aspx | title = Silverlight 2 and Deep Zoom - Get ready to build your own photozooming collections | publisher = LiveSide | accessdate = 2008-03-06}}</ref> The images can scale from 2 or 3 [[megapixel]]s in resolution to gigapixel range, but the user need not wait for it to be downloaded entirely; rather Silverlight downloads only the parts in view, optimized for the zoom level being viewed.<ref>{{cite web | url = http://labs.live.com/Silverlight+2+Deep+Zoom.aspx | title = Silverlight 2 'Deep Zoom' | publisher = [[Microsoft Live Labs]] | accessdate = 2008-03-09}}</ref> Silverlight 2 also allows limited filesystem access to Silverlight applications.<ref name="dthorpe"/> It can use the operating system's native ''Open'' file dialog box to browse to any file (which the user has access to). The file will be sanitized of path information to prevent the application from getting access to information like user name. It will be opened in ''read-only'' mode. For local storage of data, Silverlight provides ''isolated local storage'' (isostorage),<ref name="dthorpe"/> which is stored, outside the browser cache, in a hidden folder inside the user profile's private folder. In the current releases, isostorage is limited to 1 MB per URL, though this limit will later be made configurable.<ref name="dthorpe"/> Data stored by a Silverlight application, identified by the URL that it loads from, can be accessed by that application only. All instances of Silverlight share the same isostorage, so all instances of a Silverlight application can share the saved data, even if they are running on different browsers.

Silverlight CoreCLR uses an attribute based security model, as opposed to the [[Code Access Security]] (CAS) model of the desktop version of .NET Framework.<ref name="SLSecModel1">{{cite web | url = http://blogs.msdn.com/shawnfa/archive/2007/05/09/the-silverlight-security-model.aspx | title = The Silverlight Security Model | author = Shawn Farkas | accessdate = 2007-06-08}}</ref> All assemblies are marked with a security attribute, which can be either ''transparent'' (''SecurityTransparentAttribute''), ''safecritical'' (''SecuritySafeCriticalAttribute'') or ''critical'' (''SecurityCriticalAttribute''). Methods in ''transparent'' assemblies runs with partial trust, and any code in such assemblies cannot call ''critical'' methods. They also cannot contain unverifiable code (use the ''unsafe'' [[C Sharp (programming language)|C#]] keyword or use [[pointers]]) or invoke system functions by means of P/Invoke. Code in both ''critical'' and ''safecritical'' assemblies run with full trust, and are not subject to such limitations. However, ''critical'' methods can only be called from ''safecritical'' methods and not ''transparent'' methods. Thus ''transparent'' methods are prevented from using methods that can cause system wide changes. Instead, they have to call ''safecritical'' methods which will verify that the call is safe and within the limited rights of the caller, and then [[Proxy pattern|proxy]] it to the ''critical'' methods. In fact, the IsoStorage APIs are exposed as ''safecritical'' methods.<ref name="SLSecModel1"/> An assembly that does not have any attribute set is run as a ''transparent'' method. The limitations also apply for type inheritance, virtual method calls and interface method calls as well.<ref name="SLSecModel3">{{cite web | url = http://blogs.msdn.com/shawnfa/archive/2007/05/11/silverlight-security-iii-inheritance.aspx | title = Silverlight Security III: Inheritance | author = Shawn Farkas | accessdate = 2007-06-08}}</ref> Silverlight assemblies can contain members that are not usable by CoreCLR but can be by .NET Framework CLR; such methods will not be loaded when the assembly is being executed by CoreCLR.<ref>{{cite web | url = http://silverlight.net/quickstarts/Start/BrowseApi.aspx | title = How to: Explore Silverlight Assemblies with the Visual Studio Object Browser | accessdate = 2007-06-08}}</ref>

However, only platform code is allowed to be marked as ''Critical'' or ''SafeCritical''. The Silverlight runtime ensures that platform assemblies are loaded only from the Silverlight installation directory, and are signed by Microsoft. This effectively means that all user application assemblies can only be ''transparent'' code and run under partial trust and limited rights.<ref name="SLSecModel2">{{cite web | url = http://blogs.msdn.com/shawnfa/archive/2007/05/10/silverlight-security-ii-what-makes-a-method-critical.aspx | title = Silverlight Security II: What makes a method critical | author = Shawn Farkas | accessdate = 2007-06-08}}</ref> Platform code can be marked with either attribute. The BCL methods of the .NET Framework, which have the ''Internet'' attribute set allowing them to be called from untrusted code originating from Internet, are exposed in Silverlight BCL as ''transparent'' methods.<ref name="SLSecModel2"/>

==Development tools==

Silverlight applications can be written in any .NET programming language. As such, any [[Integrated development environment|development tools]] which can be used with .NET languages can work with Silverlight, provided they can target the Silverlight CoreCLR for hosting the application, instead of the .NET Framework CLR. Microsoft has positioned [[Microsoft Expression Blend|Expression Blend 2.5]] for designing the UI of Silverlight applications. [[Microsoft Visual Studio#Visual Studio 2008|Visual Studio 2008]] can be used to develop and debug Silverlight applications. To create Silverlight projects and let the compiler target CoreCLR, Visual Studio 2008 requires the ''Silverlight Tools for Visual Studio'' which is available as a beta release.<ref>{{cite web
|url = http://silverlight.net/QuickStarts/Start/CreateProject.aspx
|title = How to: Create a Silverlight Project
|accessdate = 2008-03-10}}</ref>

A Silverlight project contains the ''Silverlight.js'' and ''CreateSilverlight.js'' files which initializes the Silverlight plugin for use in HTML pages, a XAML file for the UI, and code-behind files for the application code. Silverlight applications are debugged in a manner similar to ASP.NET applications. Visual Studio's ''CLR Remote Cross Platform Debugging'' feature can be used to debug Silverlight applications running on a different platform as well.<ref>{{cite web
|url = http://blogs.msdn.com/nigel/archive/2007/05/09/mix07-your-product-is-a-feature-of-the-web.aspx
|title = MIX07 Your Product is a feature of the Web!
|author = Nigel Parker
|accessdate = 2007-06-08}}</ref>

==Licensing==
An unattributed report claimed<ref>{{cite web | url = http://www.pcworld.com/article/id,131331-c,graphicsmultimedia/article.html | title = Microsoft Goes Open Source? | author = Elizabeth Montalbano | accessdate = 2007-04-29}}</ref> that Microsoft aims to release certain parts of Silverlight source code as [[open source]] software, but Sam Ramji, director of platform technology strategy at Microsoft, said the company has no plans to do so.<ref name="clarke">{{cite web | url = http://www.theregister.co.uk/2007/05/01/microsoft_open_source_mix/ | title = Silverlight glow dimmed by cross-platform concerns | author = Gavin Clarke | accessdate = 2007-05-05}}</ref> However, the [[Dynamic Language Runtime]], included with Silverlight, have been made available on Microsoft's [[CodePlex]] website using the [[shared source#Microsoft Public License (Ms-PL)|Microsoft Public License]]. The collection of controls included in Silverlight 2 will also be made available under the same license.<ref>{{cite web | url = http://tirania.org/blog/archive/2008/Mar-11.html | title = Mix 08 | author = Miguel De Icaza | accessdate = 2008-03-12}}</ref>

==Alternative implementations==
The [[Mono (software)|Mono]] team is currently developing a [[free software|free]] and [[open-source software|open-source]] implementation of the Silverlight [[runtime]] which they named [[Moonlight (runtime)|Moonlight]]. The project is officially supported by [[Microsoft]] who,<ref name="Moonlight"/> under an agreement with [[Novell]], has made available the specifications, beyond what has been made publicly available, and test cases to the Mono team.<ref name="msnovell"/> The Mono team also has access to the Silverlight [[Base Class Library]] [[API]]s which other developers do not have access to.<ref>{{cite web
| url=http://tirania.org/blog/archive/2008/Mar-03.html
| title=Pre-Mix 08: Moonlight Updates
| name=[[Miguel de Icaza]]
| date=[[2008-03-03]]
| accessdate=2008-03-08}}</ref> Microsoft will also provide binary codecs for use in Moonlight.<ref name="msnovell"/> Moonlight targets both version 1.0 as well as 2.0 of Silverlight.<ref>{{cite web
| url=http://www.mono-project.com/Moonlight#API_Implementation
| title=Mono: API Implementation
| publisher=Mono Project
| accessdate=2008-03-08}}</ref>

==Criticism==
Silverlight has been criticized for keeping Linux out of their official offering. Even though Microsoft is officially collaborating on the [[Moonlight (runtime)|Moonlight]] project, Bruce Chizen, former CEO of [[Adobe Systems|Adobe]], has questioned "the commitment of Microsoft to keep the Silverlight platform compatible with other OS besides [[Microsoft Windows|Windows]]".<ref>{{cite web | url=http://www.java-entrepreneur.com/50226711/adobe_ceo_questions_microsoft_silverlight_crossplatform_commitment.php
| title=Adobe CEO questions Microsoft Silverlight cross-platform commitment | author=gautam | date=April 20, 2007 | publisher=Java Entrepreneur | accessdate=2007-12-06}}</ref> His concerns are based on "examples from history" where, he claims, Microsoft has launched products with promises of ongoing cross-platform compatibility that no longer apply.

The international, non-profit [[European Committee for Interoperable Systems]] ("a coalition of Microsoft's largest competitors"<ref>{{cite web
| url=http://www.itwire.com/content/view/8988/53/
| title=Microsoft runs into EU Vista charges
|publisher=itwire.com
| quote=''The main complaint is Microsoft's bundling of its own markup language XAML with Vista. According to ECIS, XAML has been positioned to compete with the universally used HTML (hypertext markup language), which is the code used to design web pages of sites in use today. ECIS contends that bundling XAML with Vista is an attempt to promote the creation of websites that work only with Vista.''
| date=[[2007-01-28]]
| accessdate=2008-02-24}}</ref>) fears that with Silverlight Microsoft aims to introduce content on the [[world wide web|web]] that can only be accessed from the [[Microsoft Windows|Windows]] platform. They argue that use of [[XAML]] in Silverlight is positioned to replace the cross-platform [[HTML]] standard. Effectively, if Silverlight usage becomes widespread enough, users will risk having to purchase Microsoft products to access web content<ref>{{cite web
| url=http://www.ecis.eu/news/2007_jan26.html
| title=ECIS Media Release January 26, 2007|publisher=[[ECIS]]
| quote=''With XAML and OOXML Microsoft seeks to impose its own Windows-dependent standards and displace existing open cross-platform standards which have wide industry acceptance, permit open competition and promote competition-driven innovation. The end result will be the continued absence of any real consumer choice, years of waiting for Microsoft to improve - or even debug - its monopoly products, and of course high prices''
| date=[[2007-01-26]]
| accessdate=2007-10-19}}</ref>. California and several other U.S. states also have asked a District Judge to extend most of Microsoft's [[United States v. Microsoft|antitrust case]] settlement for another five years,<ref>{{cite web | url=http://blog.seattlepi.nwsource.com/microsoft/archives/123837.asp | author=Todd Bishop | date=October 17, 2007 | title=Antitrust filing cites Microsoft Silverlight concern | publisher=Seattle Post-Intelligencer | accessdate=2007-12-06}}</ref> citing "a number of concerns, including the fear that Microsoft could use the [[Windows 7|next version of Windows]] to 'tilt the playing field' toward Silverlight, its new [[Adobe Flash]] competitor," says a [[Seattle Post-Intelligencer]] article.

Microsoft has also been criticized for not using the [[Scalable Vector Graphics]] standard for Silverlight, which, according to Ryan Paul of [[Ars Technica]], is consistent with Microsoft's [[Criticism of Microsoft#Vendor lock-in|ignoring of open standards]] in other products, as well.<ref name="Ars1">{{cite web | url = http://arstechnica.com/news.ars/post/20070501-microsofts-flash-killer-steals-the-show-at-mix07.html | title = Microsoft's Flash-killer Silverlight steals the show at MIX07 | author = Ryan Paul | accessdate = 2007-05-06}}</ref> However, according to David Betz, an independent .NET technologies specialist, Microsoft would have needed to alter the SVG specification to add .NET integration and UI constructs on top of SVG to make it suitable for scenarios Silverlight uses markup for (UI and vector markup, by default). Consequently, the "choice by [[Microsoft]] to use XAML over SVG, served to retain the SVG standard by not adding proprietary technology [to extend SVG]". He further says,

<blockquote>"Silverlight can be viewed as a web extension of the [[Windows Presentation Foundation]] (WPF), a [[.NET Framework|.NET]] 3.0 technology and not simply as a new web technology. As such, it makes sense that Silverlight uses XAML, not SVG. If Silverlight were based on SVG, then there would be a chasm between Silverlight and the .NET Framework, but as it stands Silverlight's use of XAML makes it part of the .NET family. In fact, it’s important to note that elements in XAML usually represent objects in the [[.NET Framework]]; this would simply not be possible in SVG." <ref name="netfxharmonics1">{{cite web | url = http://www.netfxharmonics.com/2007/06/Silverlights-Adoption-as-Public-De-Facto-Standard.aspx | title = Silverlight's Adoption as Public De-Facto Standard | author = David Betz | accessdate = 2007-06-20}}</ref></blockquote>


==See also==
==See also==

Revision as of 21:44, 30 March 2008

Microsoft Silverlight
Developer(s)Microsoft
Initial releaseApril 2007
Stable release5.1.50918.0[1] (January 15, 2019; 5 years ago (2019-01-15)) [±]
Preview releaseNone [±]
Written incombination of C++ and C#
Operating systemMicrosoft Windows,
Mac OS X
Available in?
TypeWeb Application framework
LicenseMS-EULA, with MS-PL components
WebsiteMicrosoft Silverlight
Silverlight.net

Microsoft Silverlight is proof that Microsoft has given up.

See also

References

  1. ^ "Microsoft Silverlight Release History". Microsoft Corporation. Retrieved 15 January 2019.