More Azure Videos

Back in July, in the events surrounding the Azure announcements at WPC, I was involved in a press event at Microsoft UK where various Microsoft partners and customers talked about their work on the Azure platform. Dave Gristwood and Eric Nelson made some great videos of the event which are available here.

Advertisements

Windows 7 RTM…the adventure.

I couldn’t face doing another complete rebuild on my machine so soon after having done one for the Windows 7 RC. So when I got the RTM I did a bad thing. I upgraded. This is not officially possible but if you copy all the source files off the DVD, edit the file sources\cversion.ini and set the MinClient setting to the same as the RC build number (7100) it will work just fine…well almost. Here’s a list of the stuff that didn’t.

1) Windows Virtual PC 2007 SP1. This does not seem to work on Windows 7 as Windows 7 has it’s own spanking new virtualisation. So I uninstalled the old one and set about trying to configure the new one. A couple of things about this though.intelutil

The new Virtual PC on Windows 7 requires hardware virtualisation support, i.e. your processor must support this. Then, as this is almost invariably disabled in the computer BIOS, you have to get in there and find the setting to activate it. In my case – Dell Latitude D830 – it was pretty well hidden in with the POST settings. To find out if your Intel processor supports this you can download the Intel® Processor Identification Utility from here. Once installed and run, look on the CPU Technologies tab under Intel® Virtualization Technology. If it’s set to Yes, you’re OK.

adaptersettings2) If you are a developer and you develop for Windows Mobile and you have the Windows Mobile SDK installed with its device emulators you may have a nasty shock at this point. The emulator uses the Virtual machine Network Services driver that is part of the old Virtual PC to allow it to piggy-back on your network connections. Once you uninstall Virtual PC 2007 this is all over. The fix for this is fairly straightforward since although Virtual PC 2007 does not work on Windows 7 it’s virtual network driver does. So, before you uninstall Virtual PC 2007 make a copy of the  Microsoft Virtual PC\Utility\VMNetSrv directory. Once the uninstall is complete go into your network adapter settings, pick any adapter and view its properties. Click on the install button, select Service and click Add… You should then be able to reinstall the driver from the copy of the directory you made.

3) Windows Mobile Device Center (WMDC). I previously had WMDC 6.1 installed on the Windows 7 RC and it worked fine. Again, no such luck on the RTM. So, I uninstalled it as the RTM is supposed to come with its own WMDC installed by default. Uninstalling the old one however seemed to knock the new one for six. It eventually started working again after a couple of reboots so I’m not sure what happened there.

In fairness to the RTM it did warn me that these thing wouldn’t work during the setup. Guess I should have taken more notice 🙂

warning

Service (Bus) Browser

I’ve put together a little tool to help with some development work I am doing. While Azure and .NET Services are still in CTP the tooling is a bit limited so, what with necessity being the mother of invention and all that, I’ve spent an afternoon hacking together my Service(Bus)Browser.

Basically, all the endpoints you create in a .NET Services solution – routers, queues, relay endpoints etc – are all listed in the service registry which is exposed as an Atom feed at the base URL of your solution. So, if you create a solution called “MySolution”, your registry root is at https://mysolution.servicesbus.windows.net. Point your favourite web browser at it and you’ll see what I mean.

However, only endpoints whose discoverability policy is set to public will appear unless you also submit the correct credentials when requesting the Atom feed. Here’s an example :

<feed xmlns="http://www.w3.org/2005/Atom">
        <title type="text">Publicly Listed Services</title>
        <subtitle type="text">This is the list of publicly-listed services currently available</subtitle>
        <id>uuid:6bbbd412-81e8-4f30-8629-909d8175e05a;id=558</id>
        <updated>2009-08-05T21:08:29Z</updated>
        <generator>Microsoft .NET Services - Service Bus</generator>
        <entry>
            <id>uuid:f661ac5a-e633-46b7-9d2a-845676c92c82;id=43</id>
            <title type="text">rest</title>
            <updated>2009-08-07T23:06:20Z</updated>
            <link rel="alternate" href="https://mysolution.servicebus.windows.net/rest/"/>
            <link rel="self" href="https://mysolution.servicebus.windows.net/rest/"/>
        </entry>
        <entry>
            <id>uuid:6bbbd412-81e8-4f30-8629-909d8175e05a;id=559</id>
            <title type="text">testqueues</title>
            <updated>2009-08-05T21:08:29Z</updated>
            <link rel="alternate" href="https://mysolution.servicebus.windows.net/testqueues/" />
            <link rel="self" href="https://mysolution.servicebus.windows.net/testqueues/" />
        </entry>
        <entry>
            <id>uuid:6bbbd412-81e8-4f30-8629-909d8175e05a;id=560</id>
            <title type="text">testrouters</title>
            <updated>2009-08-05T21:08:29Z</updated>
            <link rel="alternate" href="https://mysolution.servicebus.windows.net/testrouters/" />
            <link rel="self" href="https://mysolution.servicebus.windows.net/testrouters/" />
        </entry>
    </feed>

We can see three entries in the feed each denoting a node in the registry. Submitting a similar request to the URL of a node will retrieve the Atom feed of its child nodes and so on. Here’s the Atom feed for the testrouters node :

<feed xmlns="http://www.w3.org/2005/Atom">
    <title type="text">Publicly Listed Services</title>
    <subtitle type="text">This is the list of publicly-listed services currently available</subtitle>
    <id>uuid:11e6ffbf-1463-46e5-9a3a-61b7f0966af0;id=349</id>
    <updated>2009-08-08T08:31:00Z</updated>
    <generator>Microsoft® .NET Services - Service Bus</generator>
    <entry>
        <id>uuid:11e6ffbf-1463-46e5-9a3a-61b7f0966af0;id=350</id>
        <title type="text">5922fd42-6120-44cd-b07a-c3a36bd70168</title>
        <updated>2009-08-08T08:31:00Z</updated>
        <link rel="alternate" href="https://mysolution.servicebus.windows.net/TestRouters/5922fd42-6120-44cd-b07a-c3a36bd70168" />
        <link rel="self" href="https://mysolution.servicebus.windows.net/TestRouters/5922fd42-6120-44cd-b07a-c3a36bd70168!(router)" />
        <link rel="subscriptions" href="https://mysolution.servicebus.windows.net/TestRouters/5922fd42-6120-44cd-b07a-c3a36bd70168!(router/subscriptions)" />
        <RouterPolicy xmlns="http://schemas.microsoft.com/netservices/2009/05/servicebus/connect" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
            <Authorization>Required</Authorization>
            <Discoverability>Managers</Discoverability>
            <ExpirationInstant>2009-08-08T08:50:14.9579043Z</ExpirationInstant>
            <TransportProtection>AllPaths</TransportProtection>
            <MaxMessageSize>61440</MaxMessageSize>
            <BufferTimeout>PT10S</BufferTimeout>
            <MaxBufferLength>0</MaxBufferLength>
            <MaxBufferCapacity>0</MaxBufferCapacity>
            <MaxSubscribers>50</MaxSubscribers>
            <MessageDistribution>AllSubscribers</MessageDistribution>
            <PushDeliveryRetries>3</PushDeliveryRetries>
            <PushDeliveryTimeout>PT30S</PushDeliveryTimeout>
        </RouterPolicy>
    </entry>
</feed>

That’s the entry for a router along with an Atom extension element describing the router policy.

Here’s the UI. It’s basically a TreeView for the registry nodes, a PropertyGrid for the node properties and a RichTextBox for the raw Atom.

Service Browser UI

Currently it will manage multiple solutions, walk the Atom tree, display the nodes and their properties, policies and subscriptions. It also allows you to delete queues and routers. Next steps, when I get a bit more time, are to fix the subscription display for the router nodes and to allow the creation of routers and queues (and perhaps subscriptions). Current impediments, other than time, are that the Atom feed to the subscription URL on a router always seems to come back empty even when there are subscriptions 😦

You can download the source here. Feedback and comments welcome unless they are a 17 page treatise on why I should have used [insert your favourite UI stack here] and the [insert your favourite pattern here] pattern 🙂

Please note : Since I wrote this article and posted the code there have been a number of changes to .NET Services, the Service Bus and the Access Control Service, most notably in the November CTP where, amongst other things, we lost Routers and Queues. As a result this code will no longer work. I am working on an updated solution that demonstrates the same functionality which I will post as soon as it’s ready.

More Heap

Another great track from the forthcoming album Ellipse.

 

%d bloggers like this: