This has always been an issue when we talk about Silverlight and so much as been said about it, and so let’s look at the options.
First of all we need to think that Silverlight was not built to be a technology to deliver Occasionally Online applications, it was built to deliver RIA, and so it was made to use Online and not Offline. Is this a problem?
Secondly, Silverlight is a subset of Windows Presentation Foundation (WPF), and so my question is: Do we really need the Occasionally Online approach in Silverlight or do we need to be able to run everything we do in Silverlight in WPF also?
And so my thoughts about my own questions are:
There’s no problem with Silverlight not having been thought in terms of needing the Occasionally Online approach because this is the purpose of WPF, but it must be enhanced with something like the Occasionally Offline approach, because sometimes our Internet connections go down, for several different reasons, and we don’t want to lose all our work done in the Silverlight apps. And if we think that Silverlight 2.0 was built to bring the ability not only for the islands of richness, that was brought by the version 1.0, but also to provide a platform to build Line-Of-Business Applications this will take a lot more importance.
Still about Silverlight having the need to support the Occasionally Online approach I would say that this isn’t really a must have because this is really an Architectural choice to be made during the product planing, and so if we need a Occasionally Online approach we use WPF, and if we need an Online approach we’ll use Silverlight.
OK this is nice but there’s one important aspect that we are forgetting and that is that a product will evolve and suddenly it can turn to need an Occasionally Online approach and so, what will we do? Will we need to build the application again? Of course not, this is where the interaction between WPF and Silverlight needs to appear, because it’s needed that all the features and even controls that work in Silverlight work well in WPF, because this is how real subset frameworks work, and is this now true in Silvelight and WPF? The answer is not everything works, but it’s being worked on.
So a lot still needs to be done in this two awesome technologies that bring great User Experience for applications, but we need to think also that they are relatively new because WPF with the release of .NET 3.5 SP1 just had it’s Third Major Release, and Silvelight is only going for it’s Second. This being said a lot should be expected in both this areas.
In terms of what choices do we have today for making Silvelight a Desktop application / Occasionally Online Applications, they are the following:
- Pack it with a lightweight Web Server like Cassini Web Server
- Pack it with a custom build Windows Service that will serve the Http Requests needed by the Silverlight App. This seams to me a lot harder because to much as to be done.
- Transform it to a WPF like Application. Use this Desklighter tool that will convert your Silverlight App into a Desktop App.
This is a very interesting topic and I would like to ear your thoughts about this subject, so feel free to comment.