Microsoft Silverlight has had a topsy-turvy year. Apparently doomed or at least marginalized by HTML5, Silverlight found a foothold in Windows Phone and has more recently emerged as a key component of the Jupiter application framework and programming model for Windows 8. If Silverlight has become less important as a rich Internet application (RIA) framework, it has become more important to Microsoft's desktop and mobile platforms overall.
In the meantime, the cross-platform RIA framework is still kicking -- though development has clearly slowed. More evolutionary than revolutionary, the "new" capabilities in Microsoft's Silverlight 5 beta merely incorporate existing Microsoft technologies and port functionality previously seen in WPF (Windows Presentation Foundation).
More than a year has gone by without a major Silverlight release, and with none due until late 2011, I expected the forthcoming version 5 to be a major rev that would cement Silverlight's superiority over Adobe Flash. Instead, I was disappointed to find that many promised Silverlight 5 features are still missing or meager. Even the included code previews for satellite projects -- such as Windows Communication Foundation (WCF) RIA Services and Expression Blend -- do little more than gussy up existing capabilities.
In short, the Silverlight 5 beta looks more like a dot revision with feature creep than a major upgrade. Rather than extending Silverlight to continue hammering away at Adobe Flash, Microsoft seems to be working toward a desktop smackdown with itself -- adding Windows-specific platform invocation calls, Component Object Model (COM) support, and untethered file system access that push Silverlight deeper into the domains of .Net and WPF.
This blurring of these lines shouldn't come as a total shock. After all, Silverlight was originally code-named WPF/Everywhere. Plus, it undoubtedly makes good fiscal sense for Microsoft to consolidate internally with Windows 8 and a new version of Windows Phone on the horizon. Microsoft has said that the next version of the Windows Phone OS (aka Mango) will sport the Silverlight 4 runtime, and that there will be no support for running Silverlight applications in the Windows Phone browser.
Silverlight 5: Improved tools
I appreciate that Silverlight 5 is prerelease, and perhaps I shouldn't be looking at it so critically. Stepping in from the big picture, there are a number of improvements to Silverlight's runtime and development tools that shouldn't be ignored.
I installed the Silverlight 5 Tools Beta to Visual Studio 2010 SP 1. The Beta included the Developer Runtime, SDK, and a new preview of WCF RIA Service v1 SP2. Instead of Visual Studio, you could use Visual Web Developer Express 2010 SP1 as the development platform.
First off, it was good to see that Silverlight 5 can reference earlier version assemblies, as well as upgrade old projects with ease. Debugging is now extended to XAML through breakpoints and runtime value inspection. Gone is the tedium of having to sift through error messages or wire custom converters to trace binding errors. You can now use the Locals window for easy drill-down into errors and even be warned of potential pitfalls of improper placement within the debugger.
The Silverlight 5 beta lifts XAML with new debugging capabilities. Now, you can spot data binding errors easily without sifting through generic output messages.
Data binding has also been enhanced with several features found in WPF. I was able to bind to ancestors in the visual tree (similar to WPF's FindAncestor), which takes a lot of the heavy lifting out of DataTemplate design. You can now trace and bind the data context of a parent element without duplicating properties across multiple child views, streamlining both process and code.
I liked the new access for augmenting styles via bindings. The evaluated settings offer more flexible tuning of interface control display properties at runtime. New markup extensions let you run custom code within bindings. This makes it easier to configure properties or change the default language, for example, without messing around with resource wrappers.
Silverlight 5: Presentation, sound, and video
Microsoft has also included implicit data templates that provide more flexibility in the presentation of disparate data sets. Dynamic data templates are a welcome alternative to cranking out custom converters, and they go a long way toward simplifying your code.
On the interface front, Silverlight 5 makes good strides at improving text handling. In addition to enriched kerning and leading for tighter text control, Silverlight's new multicolumn text flow controls do a nice job at building snazzier page layouts. With vector-based printing and OpenType support in the offing, better report and doc creation apps can't be far behind.
New text flow capabilities in Silverlight 5 help streamline multiple-column layouts.
The Silverlight 5 beta also shows off a number of performance tweaks and multimedia enhancements that will be important for game developers. XNA sound effect classes can be used to create independent sound instances -- improving audio precision for effect timing and looping, for example. Further, independent animation classes have been ported from Windows Phone 7 -- along with immediate graphics mode from WPF -- to speed up graphics rendering.
Another good addition is support for H.264-encoded media playback, which now pushes processing overhead to GPU-accelerated hardware. Improved performance will be key to this important niche for Silverlight going forward.
Faced with new competition from HTML5, Silverlight's role in cross-platform content delivery becomes somewhat uncertain. Nonetheless, Microsoft continues to promote Silverlight in several high-profile apps, including Microsoft Dynamics GP and Windows Azure. Even the Visual Studio LightSwitch beta automatically generates Silverlight code now.
Silverlight remains uniquely useful for media DRM. Ad hoc enterprise apps can still benefit from Silverlight's quick data binding. Silverlight games could proliferate due to the merging of XNA Games Studio graphics libraries into the framework. And as a self-contained packaging ecosystem, Silverlight could very well become the de facto standard for application delivery to Windows Phone, Windows 8 tablets, and even the Microsoft MediaRoom IPTV platform.