Why change from WPF to Silverlight 4? Why change from WPF to Silverlight 4? wpf wpf

Why change from WPF to Silverlight 4?


Choosing WPF or Silverlight or anything else for that matter on the basis that it is trendy seems to me to be just plain silly, unless you are trying to impress a girl or a pointy haired boss.

The purpose of writing software is to make money. That's why Microsoft does it, that's why I do it and presumably that's why you do it. While there certainly are people around who do it because they like doing it or in pursuit of lofty ideals, those people are not effective market forces and have no real say.

Most of the money is in line of business (LOB) applications and all the tools are built with the express purpose of selling them to people trying to build LOB apps, because that represents the bulk of the world's dev tools budget.

Silverlight up to version three essentially competed with Flash, which is to say that it was useless for anything but sparkle on websites: witness all the sample sites linked to the Microsoft Silverlight page.

Microsoft's big push in SL4 is support for LOB development; the RIA tools. But why? Because while you can do LOB development with HTML, CSS, AJAX, Flash and web services, that's a bit like saying you can build a nice car from a Meccano set, provided you're ready to use a lot of bog. Silverlight does the same things, but efficiently and coherently, with a unified development environment. And it's shiny.

This is a tremendous improvement over the shattered toolset for working with HTML, CSS, AJAX, Flash and web services, and if you're selling that integrated development studio, it's just marvellous.

Silverlight means easy rollout. What if they don't have Silverlight? They will, even if Microsoft has to stealth it inside the next service pack. Easy rollout is great if you're the IT dept, and great if you're selling bureau services. It's also great if you're developing because you don't have to muck about developing or testing setup kits.

For bureau type services there is no other sensible choice. For conventional LOB applicatons there is no reason not to use it and deployment is much easier and more convenient. if you need to do something outside those bounds, Silverlight is not appropriate.

It may be of interest to note that my application does a number of things (direct TCP stuff) not supported by Silverlight, and this is no problem at all; the server does them on the client's behalf and this nicely dodges all the environmental hazards surrounding in-the-wild deployments because we can control the server environment.

I think cross-platform support is a furfy, because Silverlight on non-Windows platforms lags far behind, and also non-Windows commercial workstations are few and far between. Businesses don't use Linux on workstations. Macintosh is not a platform, it is a religion: there's no point even talking to them.

All that said, pre-VS2010 there is no Silverlight designer. Hand-coding endless XAML is a colossal pain in the bum. SL4/RIA in VS2010 is wonderful but Joe Public doesn't have it yet and couldn't use it to roll out if he did, because there's no go-live licence or end user run-time.

This leaves WPF as the only practical option. However [drum roll] a final beta with a go-live licence and a run-time will be available Real Soon Now, probably end of February. Kudos to ScottGu and team.


I think your understanding of WPF and Silverlight is a little lacking. Silverlight is a subset of functionality and features that are found in WPF. Silverlight has a few features that are Silverlight specific. Silverlight on the desktop is simply a response to Adobe AIR by Microsoft. So with that said, implement your application with WPF if that's your choice. Don't let "buzz" drive your decisions about your application, that's what business needs and available skills in your organization should do.


Keep in mind that Silverlight 4 is currently in Beta with no end-user client runtime available. Silverlight 4 shipped in April of 2010. If you are already developing an app in WPF for the desktop, then it's probably the right solution. However, it would be wise to keep your ear to the ground and follow what's happening in Silverlight in case you may eventually want to port your app to the web space or develop a different app in the web space.

Silverlight 4 brings Silverlight to a whole new level. Check out Tim Heuer's blog post for a lot of the new features. Also, see if you can find a video of the facebook app from the keynote when Silverlight 4 features were announced. That app highlights a ton of the new features that are desktop-focused.