So in the previous article I discussed what you can do today to run your Silverlight application independent of your web server. These were running your Silverlight application from the file system, or running a Silverlight application Offline.
In this post I am going to talk about the crazy thinking I had when responding to a post today.
Simple Web Server
My idea is quite simple. Essentially if you can run your application locally on local web server then you will have full access to network capabilities (WebClient, WCF etc). This means you will be able to make cross domain calls to local or non local servers. You will also be able to make socket calls to local or non local servers.
As was pointed out in the web server you could run cassini on the local machine but this is a little over the top.
Mega Simple C# Web Server
All we really need is a very simple socket server, which will spew out some http from a web request from IE.
Therefore we could have a little application which we associated with the .XAP file extension, which launches a simple web server process and then calls IE pointing it to our simple web server. Once the html page has been served we can trash the simple web server process and your application now runs on the desktop.
Cross Domain Access
Because our application is essentially an online application (came from a web server you know), we can talk to any web server / (socket server) which allows us via cross domain policies. Lots of Digg clients can be made yay, or when Beta 2 can talk to the new crossdomain.xml format then Yahoo Search etc will be supported.
Not only can we talk to internet services but we can talk to intranet WCF / Socket Services (using crossdomain). This means you could potentially have local print services, file services which expose the file system, talk to a time service, talk to your build server, TFS, SQL Server anything really. For sockets (you may need to create a virtual socket due to the port range supported).
Anyways that was my crazy thinking for the day. I haven't written any code to validate this but there is no reason why it wouldn't work in principal. May'be I will have time to play with it one day, or may'be you will.