Silverlight is so DSIYFA (Dirt Shit In Your Face Awesome), that literally all of your bodily fluids will evacuate upon download. If you visit the Microsoft website and search "Silverlight", a ready to download link will be present. Upon installing this engine of liquid amazing you will endure a series of images virtually transmitted to your brain at full force. These images include the Berlin wall collapsing, the shuttle explosion of the Apollo 13 mission, and basically all the best parts of the bible.
[[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]], 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>
A Silverlight application starts by invoking the Silverlight gods from the HTML page, which then loads up a [[BAMF]] file. The BAMF file contains a ''Phallic'' object, which acts as placeholder for other extreme 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 theUI is achieved by using scripting languages to modify the [[Document Object Model]] of the Silverlight Canvas object.<refname="Architecture"/>Tofacilitate this, Silverlightexposes a [[DocumentObjectModel|DOM]]API,accessiblefromanyscriptinglanguagesupportedbySilverlight, which in version 1.0 release islimited 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 [[JSON]] only.<ref name="Architecture"/>
Programmatic manipulation of all personal cameras and files is achieved by using scripting languages to modify the [[Document Object Model]] of the Silverlight Canvas object. Silverlight secretly works as a third party spyware/encryption/hacking software. Once installed Microsoft can/will use their invasion of privacy to the full extent of it's power.
Silverlight supports playback of WMV, WMA and MP3 media content[7] across all supported browsers without requiring Windows Media Player, the Windows Media PlayerActiveX control or Windows Media browser plugins. Because Windows Media Video 9 is an implementation of the SMPTEVC-1 standard, Silverlight also supports VC-1 video, though still only in an ASF container format. Furthermore, the Software license agreement says VC-1 is only licensed for the "personal and non-commercial use of a consumer".[8] Silverlight does not support playback of H.264 video, though support in future versions has been officially announced.[citation needed] Silverlight makes it possible to dynamically load XML content that can be manipulated through a 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.[9] With version 2.0, the programming logic can be written in any .NETlanguage, including some common dynamic programming languages like Ruby and Python.[10]
Releases
Bodily Fluids
Silverlight is so DSIYFA (Dirt Shit In Your Face Awesome), that literally all of your bodily fluids will evacuate upon download. If you visit the Microsoft website and search "Silverlight", a ready to download link will be present. Upon installing this engine of liquid amazing you will endure a series of images virtually transmitted to your brain at full force. These images include the Berlin wall collapsing, the shuttle explosion of the Apollo 13 mission, and basically all the best parts of the bible.
A Silverlight application starts by invoking the Silverlight gods from the HTML page, which then loads up a BAMF file. The BAMF file contains a Phallic object, which acts as placeholder for other extreme 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.[11]
Programmatic manipulation of all personal cameras and files is achieved by using scripting languages to modify the Document Object Model of the Silverlight Canvas object. Silverlight secretly works as a third party spyware/encryption/hacking software. Once installed Microsoft can/will use their invasion of privacy to the full extent of it's power.
Silverlight 2.0 (previously referred to as version 1.1)[12] includes a version of the .NET Framework, implementing the same full Common Language Runtime version as .NET Framework 3.0; so it can execute programs written in any .NET language (however you can not reference assemblies compiled with the regular .NET Framework by default). Unlike the CLR included with .NET Framework, multiple instances of the CoreCLR included in Silverlight can be hosted in one process.[13] 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.[14]
Silverlight ships with a lightweight class library which includes features such as extensible controls, XML Web Services, networking components and LINQAPIs. This class library is a subset of, and is considerably smaller than, .NET Framework'sBase Class Library. Silverlight code runs in a sandbox, thus preventing the invokation of platform APIs.[15]
File:SLSkin.PNGA set of Silverlight controls rendered with different skins
The version of .NET Framework in Silverlight adds[16] a subset of WPF UI-programming model, including support for shapes, documents, media and animation objects of WPF. Beta 2 onwards,[17] it ships with more than 30 UI controls[18] (including TextBox, CheckBox, Slider, ScrollViewer, and Calendar controls),[19] for two-way databinding support, automated layout management (by means of StackPanel, Grid etc)[19] as well as data-manipulation controls, such as DataGrid[20][12] and ListBox.[19] UI controls are skinnable using a template-based approach.[19] Third-party libraries of expanded UI-control sets are also available.[21]
Silverlight 2 Architecture
The included Base-Class Library (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 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.[20]
Silverlight also includes classes for data access over XML-based Web services, REST, WCF Services and ADO.NET Data Services.[17] The networking support in Silverlight can be used by Silverlight applications to communicate using HTTP, or at the lower socket level. Cross-domain communication is supported. [18] 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.[22] Silverlight sockets can only initiate a connection; they cannot listen for connections.[23]
Silverlight 2 includes[17] the Dynamic Language Runtime (DLR) which allows dynamic compilation and execution of dynamic (scripting) languages. Compilers for the languages based on the DLR (including IronPython and IronRuby) are [to be?] packaged with the DSL app in the .xap package.[24] 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.[24] The first upcoming languages written for the DLR are Managed JScript, IronPython 2.0, and IronRuby. Microsoft also plans to build 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.[20]
With the integration of .NET Framework, Silverlight also allows HTML-managed code interaction, which enables the manipulation of HTMLDOM elements from managed code,[16] and permits JavaScript code to call managed code and use objects instantiated by managed code. Silverlight encloses JavaScript objects and DOM elements in managed wrappers to make them available from managed code.[25] While there is no provision for calling JavaScript code directly in the 1.1 alpha release, 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.[26] It is done by creating an XAML Canvas with both 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.[27]
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.[28] The images can scale from 2 or 3 megapixels in resolution into the 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.[29] Beta 2 onwards, Deep Zoom uses an XML-based file format.[17]
WMA Professional support, including new WMA 10 Pro low-bitrate modes, although multi-channel audio content is still restricted to stereo playback
Content protection powered by Microsoft PlayReady DRM client
Server-side playlists in Windows Media Services
Media Stream Source API
The Media Stream Source is a powerful API that's responsible for enabling another much-talked-about feature: adaptive streaming of media. Adaptive streaming allows the player application to choose the bit rate of the media based on available client bandwidth and CPU resources.[17] Media Stream Source allows the developer to specify a custom method of retrieving media data, the only requirement being that the final video and audio streams be presented to Silverlight runtime in a format that Silverlight can decode (VC-1, WMA, MP3, etc). This allows extensible support for otherwise natively unsupported file formats (i.e. MP4, Matroska, Ogg), protocols (i.e. Shoutcast) and delivery methods (i.e. adaptive streaming, P2P). Microsoft first publicly showcased the power of Media Stream Source by powering the NBC Olympics website with their own implementation of adaptive streaming.[31]
Silverlight 2 also allows limited filesystem access to Silverlight applications.[25] It can use the operating system's native Open-file dialog box to browse to any file (to which the user has access). The file is sanitized of path information, to prevent the application from getting access to information such as user name, and can be opened only in read-only mode. For local storage of data, Silverlight provides isolated local storage (isostorage),[25] namely, outside the browser cache, in a folder hidden inside the private user-profile folder. It is set to 1 MB per URL by default,[25] but this can be changed by the user.[17] Data stored by a Silverlight application in the isostorage is identified by the URL from which it loads, and can be accessed by that application only. All instances of Silverlight share the same isostorage, so all instances of the same 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.[32] Assemblies are marked with a security attribute, which can be transparent (SecurityTransparentAttribute), safecritical (SecuritySafeCriticalAttribute) or critical (SecurityCriticalAttribute). Methods in transparent assemblies run with partial trust, and codes within such assemblies cannot call critical methods (methods which can cause system-wide changes); neither can transparent assemblies contain unverifiable code (use the unsafeC# 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 therefore not subject to such limitations. However, a transparent method can call a safecritical method, and a safecritical method can call a critical method. In such a case, the safecritical method will verify that the call is both safe and within the limited rights of the caller; if so, then the safecritical method will proxy the call to the requested critical method. In fact, the IsoStorage APIs are exposed as safecritical methods.[32] An assembly whose security attribute is unset is run as a transparent method. Analogous limitations also apply to type-inheritance; namely, in the cases of virtual-method calls and interface-method calls.[33] Silverlight assemblies can contain members that are not usable by CoreCLR, as long as they can be processed by the .NET Framework CLR; such methods will not be loaded when the assembly is being executed by CoreCLR.[34]
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 digitally signed by Microsoft. This effectively means that user-application assemblies can only be transparent code (run under partial trust and limited rights).[35] 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.[35]
Silverlight 3
At the IBC2008 show in Amsterdam (September 12-16, 2008) Microsoft announced that the next major release of Silverlight will feature support for H.264 video and AAC audio decoding.[36]Microsoft also showed a technical preview of H.264 playback in Silverlight at the same show.
Opera will be officially supported with future builds.[41] Unofficially Silverlight supports Opera already, via a hack.[42]
On Linux^, the functionality will be made available via the compatible third-party Moonlight runtime.[44][45] Moonlight will be available for the major Linux distributions, with support for Firefox, Konqueror, and Opera browsers, provided it was obtained through Novell.[46]
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.[3]Nokia has announced plans to make Silverlight for Mobile available for S60 on Symbian OS, as well as for Series 40 devices and Nokia Internet tablets.[47] Silverlight for Mobile will initially support Silverlight 1.0 content.[3]
Additional platforms are being considered as well.[48]
Silverlight applications can be written in any .NET programming language. As such, any 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 versions 2.0 and 2.5 for designing the UI of Silverlight 1.0 and 2 applications respectively. 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.[49]
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.[50]
In conjunction with the release of Silverlight 2.0 Eclipse was added as a development tool option.[51]
Licensing
An unattributed report claimed[52] 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.[53] However, the Dynamic Language Runtime, included with Silverlight, has been made available on Microsoft's CodePlex website using the Microsoft Public License. The collection of controls included in Silverlight 2 will also be made available under the same license.[54]
The project is officially supported by Microsoft who,[44] under an agreement with Novell, has made additional specifications, access to the Silverlight Base Class LibraryAPIs, binary codecs and test cases available to the Mono team,[45] none of which are available to other members of the public.[56]
The 'covenant' under which Novell has been granted this exclusive access also specifies conditions that are incompatible with the licencing that covers most other free and open source software. As examples, it specifically requires that the software must have been "obtained directly from Novell or through an Intermediate Recipient" and that it must be "not licensed under GPLv3 or a Similar License".[46] Free software proponents Groklaw have called the covenant "radioactive" and "worthless",[57] although Novell, Inc. is enthusiastic.[58]
Silverlight has been criticized for keeping Linux out of their official offering. Even with Microsoft's official support of the Moonlight project, Bruce Chizen, former CEO of Adobe, and maker of direct competitor Flash, has questioned "the commitment of Microsoft to keep the Silverlight platform compatible with other OS than Windows".[59] His concerns are based on "examples from history" where Microsoft has launched products with promises of ongoing cross-platform compatibility that no longer apply, such as Internet Explorer for UNIX, the Microsoft Java Virtual Machine, OS/2, and Windows Media Player.
Relationship to existing Web standards
The international, non-profit European Committee for Interoperable Systems has voiced concerns that with Silverlight Microsoft aims to introduce content on the web that can only be accessed from the 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.[60]
California and several other U.S. states also have asked a District Judge to extend most of Microsoft's antitrust case settlement for another five years,[61] citing "a number of concerns, including the fear that Microsoft could use the next version of Windows to 'tilt the playing field' toward Silverlight, its new Adobe Flash competitor," says a Seattle Post-Intelligencer article. The final judgement on the motion extended the settlement two years, to November 2009, but for reasons unrelated to Silverlight. [62]
Microsoft has 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 ignoring of open standards in other products, as well.[63] However, according to David Betz, a .NET specialist, "While this seams [sic] to some to be a valid criticism and a good point to some of the web standards world, it is absolutely groundless and carries no weight." Microsoft would have altered the SVG specification to integrate it with .NET, rather than the reverse. Consequently, he thinks the "choice by Microsoft to use XAML over SVG, served to retain the SVG standard by not adding proprietary technology [to SVG]".[64]
^ ab"Covenant to Downstream Recipients of Moonlight - Microsoft & Novell Interoperability Collaboration". Microsoft. 2007-09-28. Retrieved 2008-03-08. "Downstream Recipient" means an entity or individual that uses for its intended purpose a Moonlight Implementation obtained directly from Novell or through an Intermediate Recipient... Microsoft reserves the right to update (including discontinue) the foregoing covenant... "Moonlight Implementation" means only those specific portions of Moonlight 1.0 or Moonlight 1.1 that run only as a plug-in to a browser on a Personal Computer and are not licensed under GPLv3 or a Similar License.{{cite web}}: Check date values in: |date= (help)
^Pamela Jones (28 May 2008). "Shining Some Light on Microsoft's Moonlight Covenant". Groklaw. Retrieved 2008-08-25. Moonlight is safe from threat only if you get it from Novell AND DO NOT PASS IT ON, as there are no protections for downstream recipients... unless those downstream recipients get it from an 'Intermediate Recipient' defined to only include authorized resellers... It's like walking into a store and saying "I'm only going to pay half of the amount I owe and I hereby disclaim my duty to pay full price." You can try that, but the law supersedes whatever intent or desire you've expressed. At minimum, this shows how clearly they DO NOT want to coexist with GPL'd code.
^"ECIS Media Release January 26, 2007". ECIS. 2007-01-26. Retrieved 2007-10-19. 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{{cite web}}: Check date values in: |date= (help)
^Ryan Paul. "Microsoft's Flash-killer Silverlight steals the show at MIX07". Retrieved 2007-05-06. [Microsoft]'s perpetual unwillingness (or perhaps inability) to build on existing standards is deeply detrimental to users and developers. Internet Explorer 7 is still the only major web browser that has no native support for SVG. By neglecting to use the SVG standard in Silverlight and XAML in favor of a limited and incompatible facsimile, Microsoft has once again needlessly ignored what could have been an opportunity to empower developers and help Internet Explorer catch up with browsers that are more functional and standards-compliant.
^David Betz. "Silverlight's Adoption as Public De-Facto Standard". Retrieved 2007-06-20. Silverlight can be viewed as a web extension of the Windows Presentation Foundation (WPF), a .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.