HTML vs. Silverlight vs. WPF
At Readify we focus on the Microsoft stack - WPF, Silverlight, and ASP.NET. The bulk of our projects are ASP.NET, some are Silverlight, and even less are WPF (though the WPF projects tend to be bigger in scope, so they're probably about even).
Usually the customer has decided on a technology stack before we arrive, and they've engaged us to help plan/design/build/ship the application. Sometimes it's too late to suggest technology changes, but other times we can influence the technology they decide to use.
When I'm faced with deciding on a technology, here is my workflow.
I'll call out a few points:
- My default choice is always HTML/web
- If there's a very good reason to use WPF, then I will
- Silverlight isn't on here
I'm not just talking about public web applications - I'm also talking about internal, line of business applications.
Here are some examples of where I would choose WPF:
- A point-of-sale terminal
- A data capture application for geologists in remote Western Australian deserts
- An airline flight check-in kiosk
For everything else, the answer is HTML. That might be surprising, since I'm a "WPF guy". The reality is, I recognize that even with technologies like ClickOnce, web applications are dramatically easier to debug and maintain, and have a lower cost of ownership, than desktop applications.
So why isn't Silverlight on the list?
- Most UI's are much easier to build and maintain in HTML
- An ASP.NET->Database app is much easier to build than a Silverlight->WCF->Database app
- ASP.NET MVC creates much more maintainable apps than Silverlight encourages, no matter how many times you shout "MVVM"
- It will work on all mobile devices
Now, there are a few scenarios where you might be able to convince me that Silverlight make sense. But it is never going to be like this:
There is a possibility - high before HTML 5, but increasingly getting smaller - that you might be able to get me to agree to this:
Welcome, my name is Paul Stovell. I live in Brisbane and work full time bootstrapping my own product company around Octopus Deploy, an automated deployment tool for .NET applications.
Prior to Octopus Deploy, I worked for an investment bank in London building WPF applications, and before that I worked for Readify, an Australian .NET consulting firm, where I was lucky enough to work with some of the best in the business. I also worked on a number of open source projects and was an active user group presenter. I've been a Microsoft MVP for WPF since 2006.