Debug this! How a change in the cloud broke my application
For the first time, I experienced first hand one of the perils of making use of services in the cloud. One of the sample applications that I use here at Microsoft for designing and experimenting with new Visual Studio features is DinnerNow.net. DinnerNow has a client WPF application that among other things hosts a WebBrowser control that loads a HTML page. The HTML page runs some JScript to display a map of customer orders from Virtual Earth. See below for a screenshot.
A few days ago, when I started the WPF application (Kiosk), it starting displaying the script error: 'VEMap' is undefined and as a result, the Order Map was broken. Suffice to say that debugging this problem wasn't easy. Here you have a 1) WPF application that contains a 2) WebBrowser control that loads a 3) HTML page that runs 4) JScript which calls the 5) Virtual Earth Map Control APIs in the cloud! The problem could be anywhere in this stack of technologies. What makes it even more challenging is that the Visual Studio Debugger is literally unable to debug this scenario.
To cut the long story short, I ended up using Fiddler to figure out what was going on. Basically, the Virtual Earth Map Control SDK had been upgraded to the Bing Map Control SDK and the URL for the Map Control service was no longer valid. All I had to do was to point to the new URL and the application started working again.
From this experience, what really struck me is that in the future, there will be hundreds of thousands of applications relying on services in the cloud. How will these service providers guarantee their services? Also, the types of bugs of the future are going to be that much more difficult to diagnose as you have services consuming other services, e.g. a photo service consuming a storage service and the potential for failure along this chain increases dramatically. This was a good experience in terms of understanding what debugging tools Visual Studio needs to provide for these types of applications.
Habib Heydarian.