Lot's can be, has been, and will continue to be said on this topic. Here's some thoughts I recently came up with.
Why Choose Silverlight
Silverlight’s primary appeal is in developing and deploying modern business applications for both internal and external scenarios on both sides of the firewall.
Supported Operating Systems
- Mac OSX
- Linux (via Moonlight from Novell)
- Internet Explorer
RIA Stats is the defacto standard for Silverlight usage statistics across the internet (http://riastats.com/). While Silverlight does not exist on as many machines when compared with Flash, the upgrade story is significantly different. When Microsoft decides to “flip the switch” and release an update for the plugin, within two weeks we can see that 90% of the existing user base has been upgraded.
- Extensive tooling support with Visual Studio and Expression Blend
- Copy/paste and drag-and-drop support
- Comprehensive printing support
- Localization enhancements including bidirectional text, right-to-left support
- Webcam and microphone capture support
- IIS Smooth-streaming video support
- Silverlight DRM powered by PlayReady
- Hardware acceleration for Deep Zoom
- Multi-touch gesture support
- Multicast networking and polling duplex support
- XAP signing and verification
Out of Browser Capabilities (OOB)
- Desktop popup or toast notifications
- Offline DRM
- Network connectivity detection
- Increased Isolated Storage Capacity
Additional Features for Trusted Applications (OOB)
- Read/write to My Documents, My Music, My Pictures and My Videos folder (or equivalent for non-Windows platforms)
- COM automation access to devices (e.g. USB security card reader)
- Note: COM support only works in Windows
- Cross-domain network access no longer needs a security policy file
Silverlight is the natural choice for building business applications on the web. The tooling and platform support cannot be beat. I’ve talked with various companies in Oregon, Washington, and Idaho who all mention that it’s easier to find developers who know C# and can quickly learn Silverlight, rather finding Flex developers.
Because Silverlight is also the development model on the Windows Phone 7 platform, companies who leverage Silverlight can easily enter the mobile market without having to train or hire new developers.
There are many scenarios where it makes sense not to use Silverlight. For example, ads must reach as many users as possible. Thus we see zero ads in HTML5, almost no ads built in Silverlight, some ads built in Flash, but most built as static images. If a technology is chosen to deliver an experience and the user does not have this technology then additional costs must be incurred to support a “graceful degradation”.
Ultimately the choice of whether to choose Silverlight for a specific project will also include outside factors. Some of those factors will have nothing to do with how Silverlight compares against Flash. Listed below are questions that I use when determining whether to choose Silverlight for a specific project.
- Will the app be living inside or outside the firewall?
- Does IT control over what is installed on the user’s machine?
- Who will be using the app?
- What is the likelihood that Silverlight is already installed on their machine?
- Is the user averse to installing a new plugin?
- Can the user be compelled to happily spend 30 seconds to install Silverlight?
- Membership service (e.g. Netflix)
- Premium content (e.g. Olympics, NBC Sunday Night Football)
- What technology is the team already familiar with?
- How long will the application need to be maintained?
- What features are required for future versions of the app?
- Does the app require features that are only available in Silverlight?
Obviously there is a ramp-up period where teams must learn the tools, framework, and controls to become proficient in Silverlight. Once they’ve learned the technology I’ve found that most teams are able to create apps in Silverlight faster than in Flash or HTML5. The increase in productivity is primarily because of the tools and language support provided by Microsoft. How must faster? I recently saw one app which originally took four weeks that was rebuilt using Silverlight in only two weeks.
Normally I would not recommend rewriting an existing Flash app in Silverlight. Rewrites of existing software are expensive. The best time to switch an app from Flash to Silverlight is when an update is already scheduled where a rewrite is essentially happening under the covers anyway.