Microsoft Silverlight is a web application framework that provides functionalities similar to those in Adobe Flash, integrating multimedia, graphics, animations and interactivity into a single runtime environment. Initially released as a video streaming plugin, later versions brought additional interactivity features and support for .NET languages and development tools. The current version, 3.0, was released on July 9, 2009.
It is compatible with multiple web browser products used on Microsoft Windows, Linux (using Novell Moonlight), and Mac OS X operating systems. Mobile devices, starting with Windows Mobile 7 and Symbian (Series 60) phones, will likely become supported in 2010. A free software implementation named Moonlight, developed by Novell in cooperation with Microsoft, is available to bring compatible functionality to Linux, FreeBSD and other open source platforms.
Overview
Silverlight provides a retained mode graphics system similar to Windows Presentation Foundation, and integrates multimedia, graphics, animations and interactivity into a single runtime environment. In Silverlight applications, user interfaces are declared in Extensible Application Markup Language (XAML) and programmed using a subset of the .NET Framework. XAML can be used for marking up the vector graphics and animations. Textual content created with Silverlight is searchable and indexable by search engines as it is not compiled, but represented as text (XAML).Silverlight can also be used to create Windows Sidebar gadgets for Windows Vista.
Silverlight supports Windows Media Video (WMV), Windows Media Audio (WMA) and MPEG Layer III (MP3) media content across all supported browsers without requiring Windows Media Player, the Windows Media Player ActiveX control or Windows Media browser plugins. Because 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 Advanced Systems Format (ASF) container format. Furthermore, the Software license agreement says VC-1 is only licensed for the "personal and non-commercial use of a consumer". Silverlight, since version 3, supports the playback of H.264 video. Silverlight makes it possible to dynamically load Extensible Markup Language (XML) content that can be manipulated through a Document Object Model (DOM) interface, a technique that is consistent with conventional 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. With version 2, the programming logic can be written in any .NET language, including some derivatives of common dynamic programming languages like IronRuby and IronPython.
Versions
Silverlight 1.0
Silverlight 1.0, which was developed under the codename Windows Presentation Foundation/Everywhere (WPF/E), consists of the core presentation framework, which is responsible for the user interface (UI), interactivity and user input, basic UI controls, graphics and animation, media playback, Digital restrictions management (DRM), and DOM integration.[11] 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 Joint Photographic Experts Group (JPEG)), vector graphics, text and animations.
* Media – playback of MP3, 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 Hyper Text Markup Language (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.
Programmatic manipulation of the UI is achieved by using scripting languages to modify the Document Object Model of the Silverlight Canvas object. To facilitate this, Silverlight exposes a DOM application programming interface (API), accessible from any scripting language supported by Silverlight, which in version 1.0 release is limited 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 XML and JavaScript Object Notation (JSON) only.
Silverlight 2
Silverlight 2 (previously referred to as version 1.1) includes a version of the .NET Framework, implementing the same full Common Language Runtime (CLR) version as .NET Framework 3.0; so it can execute programs written in any .NET language. (By default, however, you cannot reference assemblies compiled with the regular .NET Framework.[citation needed]) Unlike the CLR included with .NET Framework version 3.5 and earlier, but like .NET Framework 4.0, multiple instances of the CoreCLR included in Silverlight can be hosted in one process. 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 assemblies which are then compressed using ZIP and stored in a .xap file.
Silverlight ships with a lightweight class library which includes features such as extensible controls, XML Web Services, networking components and Language Integrated Query (LINQ) APIs. This class library is a subset of, and is considerably smaller than, .NET Framework's Base Class Library (BCL). Silverlight code runs in a sandbox, thus preventing the invocation of platform APIs.
The version of .NET Framework in Silverlight adds a subset of Windows Presentation Foundation (WPF) UI-programming model, including support for shapes, documents, media and animation objects of WPF. Beta 2 onwards, it ships with more than 30 UI controls (including TextBox, CheckBox, Slider, ScrollViewer, and Calendar controls), for two-way databinding support, automated layout management (by means of StackPanel, Grid, etc.) as well as data-manipulation controls, such as DataGrid and ListBox. UI controls are skinnable using a template-based approach.Third-party libraries of expanded UI-control sets are also available.
The included BCL provides classes for collections, reflection, regular expressions, string handling and data access. It also supports LINQ, with full support for LINQ to Objects and expression trees. Almost all of the System.Linq and System.Linq.Expression namespaces are exposed. It also supports serialization of objects, for data persistence. Silverlight can handle data in Really Simple Syndication (RSS) or JSON format, in addition to XML. The BCL provides enhanced support for working with XML data, including the XMLReader and XMLWriter classes. Silverlight 2 also supports asynchronous programming via the use of the threading libraries.
Silverlight also includes classes for data access over XML-based Web services, Representational State Transfer (REST), Windows Communication Foundation (WCF) Services and ADO.NET Data Services. The networking support in Silverlight can be used by Silverlight applications to communicate using Hypertext Transfer Protocol (HTTP), or at the lower socket level. Cross-domain communication is supported. Silverlight uses an XML-based configuration file to control the cross-domain resource-access policy, for both HTTP and socket connections. It can be used by site administrators to control which resources a Silverlight application can access, when that application did not originate in the domain of the site. In addition, Silverlight also supports the Adobe Flash Cross-domain policy file format. Silverlight sockets can only initiate a connection; they cannot listen for connections.