Microsoft Silverlight: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Ganggang Hu
No edit summary
mNo edit summary
 
(70 intermediate revisions by 9 users not shown)
Line 1: Line 1:
{{subpages}}
{{subpages}}
{{EZarticle-open-auto|CZ:CIS 700 Special Topics 2008}}
{{TOC|right}}
'''Microsoft Silverlight''', previously known as [[Microsoft Windows|Windows]] Presentation Foundation/Everywhere, is [[Microsoft]]'s flagship cross-platform, cross-browser web [[client-server|client]] runtime for developing Rich Interactive Applications (RIAs), such as graphics, animations and video playback. Silverlight extends the web development technique beyond the limitations of traditional [[HTML]] and [[JavaScript]].


== History ==
In order to create powerful web applications, targeted for major platforms and [[Web browser|Web browsers]], deliver the next generation of [[.NET Framework|.NET]] based media experiences and rich interactive applications for the Web, Microsoft developed Silverlight.
In 2003, Microsoft was developing a technology called [[Microsoft Windows|Windows]] Presentation Foundation (WPF), formerly code-named Avalon. It is the graphics engine implemented in Vista. As the needs for a more powerful web application and Rich Interactive Applications (RIAs) increases, Microsoft uses its WPF technology to develop a powerful media plug-in, targeted for major platforms, such as [[Microsoft Windows|Windows]],[[ Mac OS X]], and [[Linux]] (Moonlight), and [[Web browser|web browsers]], to deliver the next generation media experiences and [[.NET Framework|.NET]] based Rich Interactive Applications (RIAs) for the Web.


'''Microsoft Silverlight''', previously known as [[Microsoft Windows|Windows]] Presentation Foundation/Everywhere, is [[Microsoft]]'s flagship cross-platform, cross-browser web [[client-server|client]] runtime for developing rich interactive applications such as graphics, animations and video playback. Silverlight extends the web development technique beyond the limitations of traditional [[HTML]] and [[JavaScript]].
In September 2007, Microsoft launched Silverlight 1.0. Silverlight 1.0 is built based on XAML (Extensible Application Markup Language) and JavaScript.  It runs under the [[.NET Framework|.NET Framework]] 3.0 and has a code behind written in JavaScript. Industry standard video and audio codecs, such as VC-1, WMV, MP3 and WMA, are supported by Silverlight. Silverlight 1.0 did not take long to become a big hit in the media plug-in industry. However, Silverlight 1.0 has several limitation, such as limited built-in User Interface controls and only supported by JavaScript as the code behind. To work around some of the limitation, a group of developers develop their own tools, such as Script#, a third party compiler which is used to compile [[C# PROGRAMMING LANGUAGE|C#]] source code into JavaScript.


== History ==
Microsoft realizes the limitation in its Silverlight 1.0, and in response to it, they introduced Silverlight 1.1 Alpha. In November 2007, Microsoft announced that they were renaming Silverlight 1.1 to Silverlight 2.0. Silverlight 2.0 is currently available as a beta version (Silverlight 2.0 Beta 2). Silverlight 2.0 is essentially Silverlight 1.0 with more built-in User Interface controls and supported by more [[programming languages]] such as, [[C# PROGRAMMING LANGUAGE|C#]] and Visual Basic as the code behind.
In order to create powerful web applications targeted for major platforms and [[Web browser|Web browsers]] and deliver the next generation of .NET based media experiences and rich interactive applications for the Web, [[Microsoft]] developed Silverlight.


In 2003, [[Microsoft]] is developing a technology called Windows Presentation Foundation (WPF), formerly code-named Avalon. It is the graphics engine which is implemented in Vista. As the needs for a more powerful web application and Rich Interactive Applications (RIAs) increases, [[Microsoft]] uses its WPF technology to develop a powerful media plug-in targeted for major platforms, such as [[Windows]],[[ Mac OS X]], and [[Linux]] (Moonlight), and [[Web browser|Web browsers]] and deliver the next generation media experiences and .NET based RIAs for the Web.
With the enhanced capabilities and User Controls, Silverlight has gained more and more popularity since it was first released in September 2007. It is used to power the unprecedented online experience NBC Universal is creating for the 2008 Beijing [[Olympic Games|Olympics]] <ref>Microsoft [http://www.microsoft.com/presspass/press/2008/jun08/06-03TechEdDevPR.mspx "Bill Gates Explores Past, Present and Future of Application Development at Tech•Ed North America 2008 Developers"]</ref>.


In September 2007, [[Microsoft]] launched Silverlight 1.0. Silverlight 1.0 is built based on XAML (Extensible Application Markup Language) and [[JavaScript]].  It runs under the [[.NET Framework|.NET Framework]] 3.0. It has a code behind written in [[JavaScript]]. Industry standard video and audio coded, such as VC-1, WMV, MP3 and WMA, are supported by Silverlight. Silverlight 1.0 did not take long to become a big hit in the media plug-in industry. However, Silverlight 1.0 has several limitations, such as limited built-in User Interface controls and developers can only use javascript as the code behind. Some third party compilers such as Script#, which compiles [[C# PROGRAMMING LANGUAGE|C#]] source code into [[JavaScript]], try to work around these limitations.
== Technology ==
=== Overview ===
More than just animation and media playback, Silverlight is a development environment that can put desktop performance and flexibility on the Web. This ability is supported by tools and software made available by Microsoft, and complemented by new services from Microsoft's Lives division.


In response to Silverlight 1.0 limitation, [[Microsoft]] introduced Silverlight 1.1 Alpha. In November 2007, [[Microsoft]] announced that they were renaming Silverlight 1.1 to Silverlight 2.0. Silverlight 2.0 is currently available as a beta version (Silverlight 2.0 Beta 2). Silverlight 2.0 is the same as Silverlight 1.0 with more built-in User Interface controls and supported by more programming languages such as, [[C# PROGRAMMING LANGUAGE|C#]] and Visual Basic.  
A compact '''Common Language Runtime (CLR)''' is embedded in Silverlight, allowing developers to build desktop-like applications on the Web in a number of supported programming languages. The languages supported are [[C# programming language|C#]], JavaScript (ECMA 3.0), VB, [[Python programming language|Python]] and [[Ruby (programming language)|Ruby]]. The interpreters for [[Python programming language|Python]] and [[Ruby (programming language)|Ruby]] were built by Microsoft and have been released to the public, which allows developers to make contributions to it <ref name=Cubrilovic>Cubrilovic, Nik [http://www.techcrunch.com/2007/04/30/silverlight-the-web-just-got-richer/ "Silverlight: The Web Just Got Richer"]</ref>.


With the enhanced capabilities and User Controls, Silverlight has gained more and more popularity since it was first released in September 2007. It is used to power the unprecedented online experience NBC Universal is creating for the 2008 Beijing [[Olympic games|Olympics]] <ref>Microsoft [http://www.microsoft.com/presspass/press/2008/jun08/06-03TechEdDevPR.mspx "Bill Gates Explores Past, Present and Future of Application Development at Tech•Ed North America 2008 Developers"]</ref>.
From the day it was released until now, the use of Silverlight technology is mostly in multimedia. Silverlight attacks the constraint of traditional media playback, such as quality levels and full screen viewing, by distributing multimedia as part of the application at quality levels up to 720p (high definition) and also allowing full screen viewing, not just a maximized [[Web browser|browser]] screen <ref name=Cubrilovic />. Silverlight supports industry standard video and audio codec, such as [[Microsoft Windows|Windows]] Media Video (WMV), [[Microsoft Windows|Windows]] Media Audio (WMA) and MP3. In addition, Silverlight also supports VC-1, a video codec implemented by Microsoft and recognized by the Society of Motion Picture and Television Engineers (SMPTE). All of the leading next-generation optical media formats have adopted VC-1 as a mandatory codec. The DVD Forum, Blu-ray Disc Association, and FVD standard from Taiwan has mandated VC-1 as one of the mandated video codecs <ref name=Loomis>Loomis, Jay. [http://www.microsoft.com/windows/windowsmedia/howto/articles/vc1techoverview.aspx#OverviewofVC1 "VC-1 Technical Overview"]</ref>.


== Technology ==
Microsoft introduced a new web service to support video streaming in Silverlight called Silverlight Streaming. It gives a free service for users and developers to host their Silverlight content and applications with Microsoft. With this service, users can take advantage of Microsoft's extensive global network and their content delivery network. Users is allowed to upload 4 GB of content and to stream up to 1 million minutes of online video delivery at 700 kbps <ref name=Cubrilovic />.
 
Silverlight touches not only the desktop browser. [[Microsoft Windows|Windows]] mobile and Symbian, now the two dominant mobile platforms, support Silverlight. Partnering with Nokia, Microsoft brings Silverlight to mobile phones to deliver the Rich [[Internet]] Applications [[Web browser|browser]] plug-in that use Nokia's popular S60 and S40 software platform <ref name=Hoover>Hoover, J. Nicholas. [http://www.informationweek.com/news/software/development/showArticle.jhtml?articleID=206901441 "Microsoft, Nokia Put Silverlight On Mobile Devices"]</ref>.


=== Standard ===
=== Standard ===
Silverlight doesn't comply existing standards. Instead of using the [[W3C]]'s SVG standard for [[vector graphics]], [[Microsoft]] created its own [[XML]]-based [[vector graphics]] subset for XAML that is structurally similar to SVG. Since the SVG standard is widely used and supported by many applications and development technologies, the strategy of building a completely independent [[XML]]-based language for [[vector graphics]] limits the extent to which XAML developers can use or adapt existing third-party tools and technologies that are designed to work with SVG, and also limits the power of Silverlight to catch up with [[Web browser|browsers]] that are more functional and standards-compliant. <ref>Paul, Ryan. [http://arstechnica.com/news.ars/post/20070501-microsofts-flash-killer-steals-the-show-at-mix07.html "Microsoft's Flash-killer Silverlight steals the show at MIX07"]</ref>  
Silverlight doesn't comply with existing standards. Instead of using the [[W3C]]'s [[SVG|Scalable Vector Graphics (SVG)]] standard for [[vector graphics]], Microsoft created its own [[XML]]-based vector graphics subset for XAML that is structurally similar to SVG. Since the SVG standard is widely used and supported by many applications and development technologies, the strategy of building a completely independent [[XML]]-based language for vector graphics limits the extent to which XAML developers can use or adapt existing third-party tools and technologies that are designed to work with SVG, and also limits the power of Silverlight to catch up with [[Web browser]]s that are more functional and standards-compliant. <ref>Paul, Ryan. [http://arstechnica.com/news.ars/post/20070501-microsofts-flash-killer-steals-the-show-at-mix07.html "Microsoft's Flash-killer Silverlight steals the show at MIX07"]</ref>


===Features===
=== Features ===
The main features of Silverlight version 2.0 are as follows: <ref> [http://www.learn-silverlight-tutorial.com/ "An Overview of Silverlight"]</ref>
The main features of Silverlight version 2.0 are as follows: <ref> [http://www.learn-silverlight-tutorial.com/ "An Overview of Silverlight"]</ref>
*Create and manage 2D graphics and animation  
*Create and manage 2D graphics and animation  
Line 30: Line 38:
*Communicate with services and download server resources by using the [[HTTP]] downloader  
*Communicate with services and download server resources by using the [[HTTP]] downloader  
*Parse Extensible Application Markup Language (XAML) content and markup  
*Parse Extensible Application Markup Language (XAML) content and markup  
*Navigate Web content by utilizing the [[JavaScript]] Document Object Model (DOM)  
*Navigate Web content by utilizing the JavaScript Document Object Model (DOM)  
*Support for managed code such as [[C# programming language|C#]], VB, [[Python programming language|Python]] and [[Ruby programming language|Ruby]]  
*Support for managed code such as [[C# programming language|C#]], VB, [[Python programming language|Python]] and [[Ruby (programming language)|Ruby]]  
*XAML extensibility  
*XAML extensibility  
*Control class and sample controls
*Control class and sample controls


===Examples===
===Examples===
====How to make an animation using Silverlight?====
====How to make an animation using Silverlight====
Creating an animation in Silverlight is different from [[Flash]]. The first step to animate an object in Silverlight is to create a '''Storyboard'''. '''Storyboard''' is an object in Silverlight which controls animations with a timeline. It is equipped with interactive methods to start, stop, pause and resume an animation. There are several type of animations in Silverlight. '''DoubleAnimation''', '''ColorAnimation''', and '''PointAnimation''' are the basic type of animations.
Creating an animation in Silverlight is different from [[Flash]]. The first step to animate an object in Silverlight is to create a '''Storyboard'''. '''Storyboard''' is an object in Silverlight which controls animations with a timeline. It is equipped with interactive methods to start, stop, pause and resume an animation. There are several type of animations in Silverlight. '''DoubleAnimation''', '''ColorAnimation''', and '''PointAnimation''' are the basic type of animations.


Line 49: Line 57:
An example of simple animation created in Silverlight 2.0 Beta 2 can be found in this link http://nikolas6.com/SilverlightSample/SilverlightSample.html.
An example of simple animation created in Silverlight 2.0 Beta 2 can be found in this link http://nikolas6.com/SilverlightSample/SilverlightSample.html.


[[Image:QuestionMark2.jpg|right|thumb|200px|{{#ifexist:Template:QuestionMark2.jpg/credit|{{QuestionMark2.jpg/credit}}<br/>|}}QuestionMark2.jpg]]
{{Image|QuestionMark2.jpg|right|200px|QuestionMark2.jpg}}
[[Image:QuestionMark1.jpg|right|thumb|200px|{{#ifexist:Template:QuestionMark1.jpg/credit|{{QuestionMark1.jpg/credit}}<br/>|}}QuestionMark1.jpg]]
{{Image|QuestionMark1.jpg|right|200px|QuestionMark1.jpg}}


The easiest way to create a Silverlight animation is by using Microsoft Expression Studio, in particular Expression Blend 2.5 June Preview (latest version of Expression Blend), and Microsoft Visual Studio 2008. The Expression Blend is used to design the layout and most of the stuffs related to the XAML, while the Visual Studio 2008 is used to edit the supported [[C# programming language|C#]] code.  
The easiest way to create a Silverlight animation is by using Microsoft Expression Studio, in particular Expression Blend 2.5 June Preview (latest version of Expression Blend), and Microsoft Visual Studio 2008. The Expression Blend is used to design the layout and most of the stuffs related to the XAML, while the Visual Studio 2008 is used to edit the supported [[C# programming language|C#]] code.  
Line 58: Line 66:
A Storyboard object is needed to create an animation. So, the next step is to add a new Storyboard to the project. The Storyboard has a time line property which allows user to set how objects behave for a specific duration. At time 00:00:00 (hour:minute:second) set QuestionMark2.jpg file to be visible and QuestionMark1.jpg file to be not visible. Then, at time 00:00:01, change the setting to QuestionMark2.jpg file be not visible and QuestionMark1.jpg file be visible. And finally, at time 00:00:02, set QuestionMark2.jpg file back to be visible and QuestionMark1.jpg file to be not visible. With this interchanging sequences of behavior, the two still images create an illusion of one image that has a motion, just like the example found in this link http://nikolas6.com/SilverlightSample/SilverlightSample.html. To have the behavior repeated several times or forever, Storyboard has a property called "RepeatBehavior" which can be set to 1x, 2x, 3x, and forever. Once the animation is set up, the Storyboard must be set to start the time line. This can be done by editing the code behind Page.xaml.cs. Right click the Page.xaml and select "Edit in Visual Studio". This will open Visual Studio and the solution in which the Page.xaml belongs to. In this case, to start the Storyboard, the code behind should look like the following:
A Storyboard object is needed to create an animation. So, the next step is to add a new Storyboard to the project. The Storyboard has a time line property which allows user to set how objects behave for a specific duration. At time 00:00:00 (hour:minute:second) set QuestionMark2.jpg file to be visible and QuestionMark1.jpg file to be not visible. Then, at time 00:00:01, change the setting to QuestionMark2.jpg file be not visible and QuestionMark1.jpg file be visible. And finally, at time 00:00:02, set QuestionMark2.jpg file back to be visible and QuestionMark1.jpg file to be not visible. With this interchanging sequences of behavior, the two still images create an illusion of one image that has a motion, just like the example found in this link http://nikolas6.com/SilverlightSample/SilverlightSample.html. To have the behavior repeated several times or forever, Storyboard has a property called "RepeatBehavior" which can be set to 1x, 2x, 3x, and forever. Once the animation is set up, the Storyboard must be set to start the time line. This can be done by editing the code behind Page.xaml.cs. Right click the Page.xaml and select "Edit in Visual Studio". This will open Visual Studio and the solution in which the Page.xaml belongs to. In this case, to start the Storyboard, the code behind should look like the following:


namespace SilverlightApplication2
  namespace SilverlightApplication2
{
  public partial class Page : UserControl
   {
   {
     public Page()
     public partial class Page : UserControl
     {
     {
       // Required to initialize variables
       public Page()
      InitializeComponent();
      {
      Storyboard1.Begin();  // Start the Storyboard
        // Required to initialize variables
        InitializeComponent();
        Storyboard1.Begin();  // Start the Storyboard
      }
     }
     }
   }
   }
}


Once the modification is done in the code behind, save, rebuild and test the solution.
Once the modification is done in the code behind, save, rebuild and test the solution.


====How to put Silverlight into a web page?====
====How to put Silverlight application into a web page====
When Silverlight application is compiled, it generates a file type, .xap, in the Bin folder of the project. It is basically a compiled Silverlight application, just like the .swf file in [[Flash]]. A .xap file contains an application manifest file, AppManifest.xaml, and .dll files <ref>Pietschmann, Chris. [http://pietschsoft.com/post/2008/03/Silverlight-Anatomy-of-an-XAP-file.aspx "Silverlight: Anatomy of an .XAP file"]</ref>.
When Silverlight application is compiled, it generates a file of the type .xap in the Bin folder of the project. It is basically a compiled Silverlight application, just like the .swf file in [[Flash]]. A .xap file contains an application manifest file, AppManifest.xaml, and .dll files <ref>Pietschmann, Chris. [http://pietschsoft.com/post/2008/03/Silverlight-Anatomy-of-an-XAP-file.aspx "Silverlight: Anatomy of an .XAP file"]</ref>.


To embedded the Silverlight application into a web page, the easiest way is to embed the following code into the [[HTML]] page.
To embedded the Silverlight application into a web page, the easiest way is to embed the following code into the [[HTML]] page.


   <object data="data:application/x-silverlight," type="application/x-silverlight-2-b2" width="100%" height="100%">
   <object data="data:application/x-silverlight,"  
  type="application/x-silverlight-2-b2" width="100%" height="100%">
       <param name="source" value="SilverlightSample.xap"/>
       <param name="source" value="SilverlightSample.xap"/>
   </object>
   </object>


In the above code, SilverlightSample.xap is the Silverlight application which are embedded into the web page.
In the code above, the file SilverlightSample.xap is the Silverlight application which are supposed to be embedded into the web page.


==Market==
==Market==
===Why and Where to use Silverlight?===
===Why and where to use Silverlight===
The main reasons of people using Silverlight are as follows: <ref>Sneath, Tim. [http://blogs.msdn.com/tims/archive/2007/04/15/introducing-microsoft-silverlight.aspx "Introducing Microsoft Silverlight"]</ref>
The main reasons of people using Silverlight are as follows: <ref>Sneath, Tim. [http://blogs.msdn.com/tims/archive/2007/04/15/introducing-microsoft-silverlight.aspx "Introducing Microsoft Silverlight"]</ref>
*Silverlight supports playback of WMV files, full-screen 720p video and seamless transitions between full-screen and windowed mode without losing the position in the video
*Silverlight has high-quality audio and video display
*By separating markup (XAML) from code, Silverlight provides a familiar web metaphor for designers and developers. People can embed XAML directly into [[HTML]] pages.
*Silverlight provides a familiar web metaphor for designers and developers by embedding XAML directly into [[HTML]] pages.
*Silverlight is lightweight, which is just a 1MB download on a PC  
*Silverlight is lightweight, which is just a 1MB download on a PC  
*Silverlight is blindingly fast. For example, people can play many videos simultaneously without stuttering or dropping frames.
*Silverlight is blindingly fast. For example, people can play many videos simultaneously without stuttering or dropping frames.


The same as [[Flash]], Silverlight technology mainly focus on [[Internet]]. It supports multiple platform including [[Microsoft Windows|Windows]], [[Apple Macintosh|Max OS X]] and [[Linux]], and many [[Web browser|browsers]] including IE, Firefox, Safari and Opera. As mentioned before, Silverlight 2.0 is used to broadcast over 2000 hours of the 2008 Summer [[Olympic Games]]. Also, Nokia has signed up to use Microsoft’s Silverlight platform for its S60 and S40 mobile devices as well as its Nokia [[Internet]] tablets, marking the first mobile win for the Redmond giant’s rich media development framework. <ref>Higginbotham, Stacey. [http://gigaom.com/2008/03/03/silverlight-goes-mobile-with-nokia/ "Silverlight Goes Mobile With Nokia"]</ref>
The same as [[Flash]], the current usage of Silverlight mainly focus on [[Internet]]. Microsoft is doing a good job in supporting its Silverlight technology in this aspect. To support the new version of Silverlight, Silverlight 2.0 Beta 2, Microsoft released Microsoft Silverlight Tools Beta 2 for Visual Studio 2008 to allow Silverlight 2 Beta 2 supported by VS 2008 and Expression Blend 2.5 June Preview to allow designers to use Expression Blend with Silverligh 2.0 Beta 2 features. With such supports, Microsoft can attract web developers to develop applications using Silverlight.


===Market Share===
===Market share===
Although there is no official survey about the percentage of Silverlight installation, the profit of selling [[client-server|server]] and development tools has reached $3 billion or about 25% of [[Microsoft]]'s revenue in Q4 2007(ended 6/30/2007), which shows strong potential for Silverlight to take a place in market share. <ref>Marshall, Kevin. [http://blogs.claritycon.com/blogs/kevin_marshall/archive/2007/10/19/3337.aspx "Silverlight Market Share"]</ref>
Although there is no official survey about the percentage of Silverlight installation, the profit of selling [[client-server|server]] and development tools has reached $3 billion or about 25% of Microsoft's revenue in Q4 2007(ended 6/30/2007), which shows strong potential for Silverlight to take a place in market share. <ref>Marshall, Kevin. [http://blogs.claritycon.com/blogs/kevin_marshall/archive/2007/10/19/3337.aspx "Silverlight Market Share"]</ref>


===Allies and Competitors===
===Allies and competitors===
====The relationship of Silveright to other applications====
====The relationship of Silveright to other applications====
Tafiti is an animated search engine which combines Silverlight with Live Search launched by Microsoft in 2007. This service is designed to "help people use the web for research projects that span multiple search queries and sessions by helping visualize, store, and share research results", and intended to "explore the intersection of richer experiences on the web and the increasing specialization of search". <ref>[http://www.cbc.ca/technology/story/2007/08/22/tech-tafiti.html "Microsoft launches animated search engine"]</ref>
Silverlight is used as the key technology for Popfly, a Rich [[Internet]] Application editor that enables users to create [[Mashup|mashups]], gadgets, Web pages and applications without any prerequisite of technical knowledge or development experience. <ref>Mook, Nate. [http://www.betanews.com/article/Microsoft_Popfly_Shows_Off_Silverlight/1179526052 "Microsoft 'Popfly' Shows Off Silverlight"]</ref>
In June 2008, [[Microsoft Windows|Windows]] Live division released an MSN Toolbar for Internet Explorer based on Silverlight. The toolbar allows people to search and browse the entire MSN categories from the [[Web browser|browser]] without going to the msn.com site. <ref>[http://startupmeme.com/silverlight-based-msn-toolbar-for-ie/ "Silverlight based MSN Toolbar for IE"]</ref>
Also, CBS Television Stations adopt Silverlight for new user-generated content initiative on the web in order to create an interactive environment where audiences can participate in the local broadcast process. <ref>[http://www.prnewswire.com/cgi-bin/stories.pl?ACCT=104&STORY=/www/story/04-30-2007/0004577018&EDATE "CBS Television Stations Adopt Microsoft Silverlight for New User-Generated Content Initiative on the Web"]</ref>
====Competitors====
====Competitors====
See [[Silverlight vs. Flash]]
Silverlight aims to compete with Adobe [[Flash]] and the presentation components of [[Ajax]]. It also competes with Sun Microsystems’ [[Java]]FX, which was launched a few days after Silverlight. Some people claim that as the future choice of developers who build rich Internet applications, Silverlight makes [[Flash]]/Flex look like an absolute toy. <ref>Arrington, Michael. [http://www.techcrunch.com/2007/05/01/take-time-to-understand-silverlight-its-important/ "Why Silverlight Is Important"]</ref>


Silverlight aims to compete with Adobe [[Flash]] and the presentation components of [[Ajax]]. It also competes with Sun Microsystems’ [[Java]]FX, which was launched a few days after Silverlight. Some people claim that as the future choice of developers who build rich Internet applications, Silverlight makes [[Flash]]/Flex look like an absolute toy. <ref>Arrington, Michael. [http://www.techcrunch.com/2007/05/01/take-time-to-understand-silverlight-its-important/ "Why Silverlight Is Important"]</ref>
==Future developments==
With the ambition to improve the "user experience capabilities" and provide an end-to-end development environment that encourages the use of Microsoft technologies and services, Microsoft plans to popularize Silverlight on mobile platform and ensure the foothold in the mobile market.<ref>[http://www.reportlinker.com/p090926/Silverlight-Mobile-2008-Developing-the-Platform-for-the-Future-of-Mobile-Content.html "Silverlight Mobile 2008: Developing the Platform for the Future of Mobile Content"]</ref>  
 
Silverlight will support all major [[Web browser|browsers]] on both [[Apple Macintosh|Mac OS X]] and on [[Microsoft Windows|Windows]]. Particular care is being taken to account for differences in platform and [[Web browser|browser]] capabilities to ensure a consistent experience including experiences on Firefox, Safari, and [[Internet]] Explorer. Microsoft will extend the support for Silverlight on [[Linux]] through a partnership with Novell.


==Future Developments==
The next step of Silverlight's media development is to support Advanced Audio Coding (AAC) audio, MPEG4, H.264 and [[Flash]] video. Currently, Microsoft is gathering information from customers about the needed codecs and update Silverlight codecs when necessary.  
The problem is everything else. Can [[Microsoft]] truly be trusted to commit themselves to a cross-platform environment with an equally rich experience across platforms? History says no. And even it could be trusted the fact is that it’s [[Google]] that is showing leadership where [[Microsoft]] should be. Its [[Google]] thats taking the fight to Viacom. If any company in the tech industry is in a position to dictate to old media the terms of fair use and stand up and tell them - not ask - that the new paradigm is more sharing not less, it’s [[Microsoft]]. But it doesn’t, instead it tries to push DRM and kowtow to the media industry for some inexplicable reason. What we need from [[Microsoft]] is to stop acting like the rest of the tech industry is its enemy and assume a position of leadership. Instead, [[Microsoft]] comes out with another kickass developer suite, its been doing that since the 80’s, why you find that impressive is beyond me.


==Reference==
According to the long-term goal for Silverlight, Microsoft hopes that "By using Expression Studio and Visual Studio, designers and developers can collaborate more effectively using the skills they have today to light up the Web of tomorrow. By leveraging Silverlight's support for [[.NET Framework|.NET]], High Definition video, cost-effective advanced streaming, unparalleled high-resolution interactivity with Deep Zoom technology, and controls, businesses can reach out to new markets across the Web, desktop, and devices".<ref>[http://www.microsoft.com/silverlight/overview/faq.aspx "Microsoft Silverlight: Light Up the Web"]</ref> However, there are still some requirements for Silverlight to gain future success. <ref>Hoffman, Kevin. [http://dotnetaddict.dotnetdevelopersjournal.com/silverlight_future.htm "Silverlight's Future and my Silverlight 2.0 Wishlist"]</ref>


<references/>
==See also==
*[[Silverlight vs. Flash|Silverlight vs. Flash]]


[[Category:CZ Live]]
==References==
[[Category:Stub Articles]]
{{reflist|2}}[[Category:Suggestion Bot Tag]]
[[Category:Computers Workgroup]]

Latest revision as of 06:01, 19 September 2024

This article is developing and not approved.
Main Article
Discussion
Related Articles  [?]
Bibliography  [?]
External Links  [?]
Citable Version  [?]
 
This editable Main Article is under development and subject to a disclaimer.

Microsoft Silverlight, previously known as Windows Presentation Foundation/Everywhere, is Microsoft's flagship cross-platform, cross-browser web client runtime for developing Rich Interactive Applications (RIAs), such as graphics, animations and video playback. Silverlight extends the web development technique beyond the limitations of traditional HTML and JavaScript.

History

In order to create powerful web applications, targeted for major platforms and Web browsers, deliver the next generation of .NET based media experiences and rich interactive applications for the Web, Microsoft developed Silverlight.

In 2003, Microsoft was developing a technology called Windows Presentation Foundation (WPF), formerly code-named Avalon. It is the graphics engine implemented in Vista. As the needs for a more powerful web application and Rich Interactive Applications (RIAs) increases, Microsoft uses its WPF technology to develop a powerful media plug-in, targeted for major platforms, such as Windows,Mac OS X, and Linux (Moonlight), and web browsers, to deliver the next generation media experiences and .NET based Rich Interactive Applications (RIAs) for the Web.

In September 2007, Microsoft launched Silverlight 1.0. Silverlight 1.0 is built based on XAML (Extensible Application Markup Language) and JavaScript. It runs under the .NET Framework 3.0 and has a code behind written in JavaScript. Industry standard video and audio codecs, such as VC-1, WMV, MP3 and WMA, are supported by Silverlight. Silverlight 1.0 did not take long to become a big hit in the media plug-in industry. However, Silverlight 1.0 has several limitation, such as limited built-in User Interface controls and only supported by JavaScript as the code behind. To work around some of the limitation, a group of developers develop their own tools, such as Script#, a third party compiler which is used to compile C# source code into JavaScript.

Microsoft realizes the limitation in its Silverlight 1.0, and in response to it, they introduced Silverlight 1.1 Alpha. In November 2007, Microsoft announced that they were renaming Silverlight 1.1 to Silverlight 2.0. Silverlight 2.0 is currently available as a beta version (Silverlight 2.0 Beta 2). Silverlight 2.0 is essentially Silverlight 1.0 with more built-in User Interface controls and supported by more programming languages such as, C# and Visual Basic as the code behind.

With the enhanced capabilities and User Controls, Silverlight has gained more and more popularity since it was first released in September 2007. It is used to power the unprecedented online experience NBC Universal is creating for the 2008 Beijing Olympics [1].

Technology

Overview

More than just animation and media playback, Silverlight is a development environment that can put desktop performance and flexibility on the Web. This ability is supported by tools and software made available by Microsoft, and complemented by new services from Microsoft's Lives division.

A compact Common Language Runtime (CLR) is embedded in Silverlight, allowing developers to build desktop-like applications on the Web in a number of supported programming languages. The languages supported are C#, JavaScript (ECMA 3.0), VB, Python and Ruby. The interpreters for Python and Ruby were built by Microsoft and have been released to the public, which allows developers to make contributions to it [2].

From the day it was released until now, the use of Silverlight technology is mostly in multimedia. Silverlight attacks the constraint of traditional media playback, such as quality levels and full screen viewing, by distributing multimedia as part of the application at quality levels up to 720p (high definition) and also allowing full screen viewing, not just a maximized browser screen [2]. Silverlight supports industry standard video and audio codec, such as Windows Media Video (WMV), Windows Media Audio (WMA) and MP3. In addition, Silverlight also supports VC-1, a video codec implemented by Microsoft and recognized by the Society of Motion Picture and Television Engineers (SMPTE). All of the leading next-generation optical media formats have adopted VC-1 as a mandatory codec. The DVD Forum, Blu-ray Disc Association, and FVD standard from Taiwan has mandated VC-1 as one of the mandated video codecs [3].

Microsoft introduced a new web service to support video streaming in Silverlight called Silverlight Streaming. It gives a free service for users and developers to host their Silverlight content and applications with Microsoft. With this service, users can take advantage of Microsoft's extensive global network and their content delivery network. Users is allowed to upload 4 GB of content and to stream up to 1 million minutes of online video delivery at 700 kbps [2].

Silverlight touches not only the desktop browser. Windows mobile and Symbian, now the two dominant mobile platforms, support Silverlight. Partnering with Nokia, Microsoft brings Silverlight to mobile phones to deliver the Rich Internet Applications browser plug-in that use Nokia's popular S60 and S40 software platform [4].

Standard

Silverlight doesn't comply with existing standards. Instead of using the W3C's Scalable Vector Graphics (SVG) standard for vector graphics, Microsoft created its own XML-based vector graphics subset for XAML that is structurally similar to SVG. Since the SVG standard is widely used and supported by many applications and development technologies, the strategy of building a completely independent XML-based language for vector graphics limits the extent to which XAML developers can use or adapt existing third-party tools and technologies that are designed to work with SVG, and also limits the power of Silverlight to catch up with Web browsers that are more functional and standards-compliant. [5]

Features

The main features of Silverlight version 2.0 are as follows: [6]

  • Create and manage 2D graphics and animation
  • Handle mouse, keyboard, and ink input
  • Deliver WMV, WMA, and MP3 media
  • Work with JPEG and PNG imaging
  • Format and manipulate text
  • Communicate with services and download server resources by using the HTTP downloader
  • Parse Extensible Application Markup Language (XAML) content and markup
  • Navigate Web content by utilizing the JavaScript Document Object Model (DOM)
  • Support for managed code such as C#, VB, Python and Ruby
  • XAML extensibility
  • Control class and sample controls

Examples

How to make an animation using Silverlight

Creating an animation in Silverlight is different from Flash. The first step to animate an object in Silverlight is to create a Storyboard. Storyboard is an object in Silverlight which controls animations with a timeline. It is equipped with interactive methods to start, stop, pause and resume an animation. There are several type of animations in Silverlight. DoubleAnimation, ColorAnimation, and PointAnimation are the basic type of animations.

DoubleAnimation animates the value of a double property between two target values using linear interpolation over a specified duration. An example of DoubleAnimation is the type of animation which makes use of the opacity property of the object, since opacity property is of type double.

ColorAnimation animates the value of a color property between two target values using linear interpolation over a specified duration. This type of animation is used to animate the colors of its objects.

PointAnimation animates the value of a point property between two target values using linear interpolation over a specified duration. An animation that moves objects or enlarges objects is the type of animation which falls into PointAnimation category.

The more advance types of animations in Silverlight incorporate a set of KeyFrames. DoubleAnimationUsingKeyFrames, ColorAnimationUsingKeyFrames, PointAnimationUsingKeyFrames, and ObjectAnimationUsingKeyFrames are the advance types of animations. Each of these types of animations animates the value of its object property (such as double, point, color, and object) along with a set of KeyFrames over a specified duration.

An example of simple animation created in Silverlight 2.0 Beta 2 can be found in this link http://nikolas6.com/SilverlightSample/SilverlightSample.html.

(CC) Image: Ganggang Hu
QuestionMark2.jpg
(CC) Image: Ganggang Hu
QuestionMark1.jpg

The easiest way to create a Silverlight animation is by using Microsoft Expression Studio, in particular Expression Blend 2.5 June Preview (latest version of Expression Blend), and Microsoft Visual Studio 2008. The Expression Blend is used to design the layout and most of the stuffs related to the XAML, while the Visual Studio 2008 is used to edit the supported C# code.

In the case of the sample animation above, it uses two still images, which are then shown in sequence to create the illusion of a motion. The first step in doing this is to create a new Silverlight 2 Application project in Expression Blend. It will automatically generate two XAML files called App.xaml and Page.xaml. Each of these files contains a C# code behind, App.xaml.cs and Page.xaml.cs. Furthermore, Page.xaml contains a UserControl and Grid (named "LayoutRoot") objects by default. Once the project files are created, the two still images are then imported to the project folder, which can be done by either selecting the "Add Existing Item" option under "Project" or dragging the images into the Expression Blend project. The images are then inserted into the Grid (LayoutRoot). A Storyboard object is needed to create an animation. So, the next step is to add a new Storyboard to the project. The Storyboard has a time line property which allows user to set how objects behave for a specific duration. At time 00:00:00 (hour:minute:second) set QuestionMark2.jpg file to be visible and QuestionMark1.jpg file to be not visible. Then, at time 00:00:01, change the setting to QuestionMark2.jpg file be not visible and QuestionMark1.jpg file be visible. And finally, at time 00:00:02, set QuestionMark2.jpg file back to be visible and QuestionMark1.jpg file to be not visible. With this interchanging sequences of behavior, the two still images create an illusion of one image that has a motion, just like the example found in this link http://nikolas6.com/SilverlightSample/SilverlightSample.html. To have the behavior repeated several times or forever, Storyboard has a property called "RepeatBehavior" which can be set to 1x, 2x, 3x, and forever. Once the animation is set up, the Storyboard must be set to start the time line. This can be done by editing the code behind Page.xaml.cs. Right click the Page.xaml and select "Edit in Visual Studio". This will open Visual Studio and the solution in which the Page.xaml belongs to. In this case, to start the Storyboard, the code behind should look like the following:

 namespace SilverlightApplication2
 {
   public partial class Page : UserControl
   {
     public Page()
     {
       // Required to initialize variables
       InitializeComponent();
       Storyboard1.Begin();  // Start the Storyboard
     }
   }
 }

Once the modification is done in the code behind, save, rebuild and test the solution.

How to put Silverlight application into a web page

When Silverlight application is compiled, it generates a file of the type .xap in the Bin folder of the project. It is basically a compiled Silverlight application, just like the .swf file in Flash. A .xap file contains an application manifest file, AppManifest.xaml, and .dll files [7].

To embedded the Silverlight application into a web page, the easiest way is to embed the following code into the HTML page.

 <object data="data:application/x-silverlight," 
 type="application/x-silverlight-2-b2" width="100%" height="100%">
     <param name="source" value="SilverlightSample.xap"/>
 </object>

In the code above, the file SilverlightSample.xap is the Silverlight application which are supposed to be embedded into the web page.

Market

Why and where to use Silverlight

The main reasons of people using Silverlight are as follows: [8]

  • Silverlight has high-quality audio and video display
  • Silverlight provides a familiar web metaphor for designers and developers by embedding XAML directly into HTML pages.
  • Silverlight is lightweight, which is just a 1MB download on a PC
  • Silverlight is blindingly fast. For example, people can play many videos simultaneously without stuttering or dropping frames.

The same as Flash, the current usage of Silverlight mainly focus on Internet. Microsoft is doing a good job in supporting its Silverlight technology in this aspect. To support the new version of Silverlight, Silverlight 2.0 Beta 2, Microsoft released Microsoft Silverlight Tools Beta 2 for Visual Studio 2008 to allow Silverlight 2 Beta 2 supported by VS 2008 and Expression Blend 2.5 June Preview to allow designers to use Expression Blend with Silverligh 2.0 Beta 2 features. With such supports, Microsoft can attract web developers to develop applications using Silverlight.

Market share

Although there is no official survey about the percentage of Silverlight installation, the profit of selling server and development tools has reached $3 billion or about 25% of Microsoft's revenue in Q4 2007(ended 6/30/2007), which shows strong potential for Silverlight to take a place in market share. [9]

Allies and competitors

The relationship of Silveright to other applications

Tafiti is an animated search engine which combines Silverlight with Live Search launched by Microsoft in 2007. This service is designed to "help people use the web for research projects that span multiple search queries and sessions by helping visualize, store, and share research results", and intended to "explore the intersection of richer experiences on the web and the increasing specialization of search". [10]

Silverlight is used as the key technology for Popfly, a Rich Internet Application editor that enables users to create mashups, gadgets, Web pages and applications without any prerequisite of technical knowledge or development experience. [11]

In June 2008, Windows Live division released an MSN Toolbar for Internet Explorer based on Silverlight. The toolbar allows people to search and browse the entire MSN categories from the browser without going to the msn.com site. [12]

Also, CBS Television Stations adopt Silverlight for new user-generated content initiative on the web in order to create an interactive environment where audiences can participate in the local broadcast process. [13]

Competitors

Silverlight aims to compete with Adobe Flash and the presentation components of Ajax. It also competes with Sun Microsystems’ JavaFX, which was launched a few days after Silverlight. Some people claim that as the future choice of developers who build rich Internet applications, Silverlight makes Flash/Flex look like an absolute toy. [14]

Future developments

With the ambition to improve the "user experience capabilities" and provide an end-to-end development environment that encourages the use of Microsoft technologies and services, Microsoft plans to popularize Silverlight on mobile platform and ensure the foothold in the mobile market.[15]

Silverlight will support all major browsers on both Mac OS X and on Windows. Particular care is being taken to account for differences in platform and browser capabilities to ensure a consistent experience including experiences on Firefox, Safari, and Internet Explorer. Microsoft will extend the support for Silverlight on Linux through a partnership with Novell.

The next step of Silverlight's media development is to support Advanced Audio Coding (AAC) audio, MPEG4, H.264 and Flash video. Currently, Microsoft is gathering information from customers about the needed codecs and update Silverlight codecs when necessary.

According to the long-term goal for Silverlight, Microsoft hopes that "By using Expression Studio and Visual Studio, designers and developers can collaborate more effectively using the skills they have today to light up the Web of tomorrow. By leveraging Silverlight's support for .NET, High Definition video, cost-effective advanced streaming, unparalleled high-resolution interactivity with Deep Zoom technology, and controls, businesses can reach out to new markets across the Web, desktop, and devices".[16] However, there are still some requirements for Silverlight to gain future success. [17]

See also

References