What is Microsoft Silverlight? (and what it is not)- Part 1
By Justin
Posted on May 30, 2008
Microsoft Silverlight is a brand new technology built on the heels of Windows Vista's GUI, or more specifically, the Windows Presentation Foundation (WPF). Silverlight currently exists in two versions: version 1.1, which is the only stable release out right now, and version 2.0, which is still in beta, though its expected to be released to the public in stable form sometime in August 2008.
Background
Microsoft Silverlight is based heavily on WPF, so background on WPF is important to understanding what Silverlight is really all about. WPF is the new architecture driving the next generation of user interfaces on Windows. The first major public release of WPF came with the release of Vista, it was marketed quite a bit from a visual aspect showing off transparency effects, blurring, animation and interactive text effects etc.
WPF is a complete re-design of how the developer will design graphical user interfaces (GUI) for Windows. The reason for this re-design is based upon many factors, but the main ones include the need for high fidelity user interfaces, the mass availability of graphics processing units (GPU) in personal computers (they are no longer relegated to just gamers and CAD users) and the benefits of vector-based graphics in user interfaces.
WPF brings a lot of benefits to the old way of designing user interfaces. First, they make use of vector graphics, which is exactly what Flash animations use as well as any 3D graphics system. The benefit with vector graphics is that they can be resized without losing quality (such as in the case of a classic pixel image, where details are lost since the information is finite). Vector graphics are founded on mathematical principles, so a line is now an equation, instead of a list of pixel locations, meaning, you can change the values in that equation, equating to no loss (think zooming in on the line, rotating the line around, morphing the line in some way, etc).
WPF allows developers to create user interfaces through the use of a new standard XML language called XAML (Extensible Application Markup Language). WPF also brings together all facets of a user interface including graphics, animation, controls, sound, video, images, input and even 3D. Lastly, WPF provides support to display information on any kind of display imaginable, from a standard computer screen, to hand-held devices and printers, the resolution doesn't matter. It also provides a powerful architecture for composing custom controls, which I anticipate will knock the socks off of any previous control suite any of us have seen to date. Suffice it to say, its a good time to be a Windows developer. Lastly, all of what WPF provides is based upon the .NET Framework, so all the knowledge developers have now of .NET can easily be carried forward into designing solid and usable user interfaces almost immediately.
What is Silverlight
Basically, Silverlight is a browser plugin, that currently supports Internet Explorer, Safari and Firefox. Silverlight is essentially a small extension to the web of what WPF is to a Windows desktop. Silverlight is best described as a mash-up of a subset of WPF, as well as a subset of the .NET Framework, also having support for AJAX and LINQ and web services among others.
Since Silverlight is a browser plugin, anything you develop for Silverlight will work across any platform, similar to Flash and Java. The biggest benefit that Silverlight brings to the development table is that it captures the outstanding user interface design architecture of WPF and provides a rich set of functionality by the .NET Framework and brings this all together within the development environment of Visual Studio.
Benefits of Silverlight
Silverlight applications provide for very rich user experiences on the web. They can be embedded into existing web pages easily, in much the same way you would add Flash to a site. Silverlight has essentially limitless possibilities when it comes to designing custom user controls for the Internet. Above all are the benefits of the WPF UI functionality and the inclusion of a mini .NET Framework for networking, access to web services, etc.
Misconceptions
Oftentimes I think the best way to describe something is by explaining what it is not. Silverlight is not a new way to develop web sites or web applications, nor is it a replacement of ASP.NET. Silverlight applications are client-side applications, not server. While Silverlight does support 3D rendering, it (like WPF) is in no way a replacement of DirectX or OpenGL. It is probably most wise to think of Silverlight in the same way that AJAX is an extension to existing web technology. It's probably not a good idea to go to the extreme and develop entire solutions based on AJAX, Silverlight or Flash, instead in most cases it would be better to develop the solution in ASP.NET and then identify areas where AJAX, Flash or Silverlight could benefit.
Conclusion
Developing Silverlight/WPF applications is just plain fun. While most programmers enjoy programming almost anything by their very nature, I've never come across an architecture such as WPF (on which Silverlight is based) that is so much fun to develop against. The tools provided within Visual Studio 2008 and Microsoft's Expression series of applications (particularly Expression Blend) are outstanding and it very rewarding when you cook up an interesting and useful new control in a short time that wouldn't have even been possible prior to WPF, without writing your own graphics engine along the way. Since Silverlight 2.0 is still in beta, Microsoft recommends not writing mission critical applications, but in my research into Silverlight, I haven't encountered any bugs or issues that prevented me from tinkering. Stay tuned for Silverlight Part 2 in the coming days.
If you want to get started developing Silverlight applications, I recommend the following links:
Silverlight Plugin -http://www.microsoft.com/silverlight/
Silverlight Development Tools - http://www.microsoft.com/silverlight/resources/tools.aspx
Expression Blend - http://www.microsoft.com/expression/products/overview.aspx?key=blend
Silverlight Showcase - http://silverlight.net/showcase/default.aspx