Now that cloud providers are maturing and stabilizing their platforms, we’re seeing better and better dev tooling get released. Three major .NET-friendly cloud platforms (Windows Azure, AWS, and Iron Foundry) have management tools baked right into Visual Studio, and I thought it’d be fun to compare them with respect to completeness of functional coverage and overall usability. Specifically, I’m looking to see how well the Visual Studio plugins for each of these clouds account for browsing, deploying, updating, and testing services. To be sure, there are other tools that may help developers interact with their target cloud, but this series of posts is JUST looking at what is embedded within Visual Studio.
Let’s start with the Windows Azure tooling for Visual Studio 2012. The table below summarizes my assessment. I’ll explain each rating in the sections that follow.
|Web applications and files||Can view names and see instance counts, but that’s it. No lists of files, no properties of the application itself. Can initiate Remote Desktop command.|
|Databases||No really part of the plugin (as its already in Server Explorer), but you get a rich view of Windows Azure SQL databases.|
|Storage||No queues available, and no properties shown for tables and blobs.|
|VM instances||Can see list of VMs and small set of properties. Also have the option to Remote Desktop into the server.|
|Messaging components||Pretty complete story. Missing Service Bus relay component. Good view into Topics/Queues and informative set of properties.|
|User accounts, permissions||No browsing of users or their permissions in Windows Azure.|
Deploying / Editing
|Web applications and files||No way to deploy new web application (instances) or update existing applications.|
|Databases||Good story for adding new database artifacts and changing existing ones.|
|Storage||No changes can be made to existing storage, and users can’t add new storage components.|
|VM instances||Cannot alter existing VMs or deploy new ones.|
|Messaging components||Nice ability to create and edit queues and topics. Cannot change existing topic subscriptions.|
|User accounts, permissions||Cannot add or change user permissions.|
|Databases||Good testability through query execution.|
|Messaging components||Nice ability to send and receive test messages, but lack of customization of message limits test cases.|
Setting up the Visual Studio Plugin for Windows Azure
Before going to the functionality of the plugin interface, let’s first see how a developer sets up their workstation to use it. First, the developer must install the Windows Azure SDK for .NET. Among other things, this adds the ability to see and interact with a sub-set of Windows Azure from within Visual Studio’s existing Server Explorer window.
As you can see, it’s not a COMPLETE view of everything in the Windows Azure family (no Windows Azure Web Sites, Windows Azure SQL Database), but it’s got most of the biggies.
Browsing Cloud Resources
If the goal is to not only push apps to the cloud, but also manage them, then a decent browsing story is a must-have. While Windows Azure offers a solid web portal – and programmatic interfaces ranging from PowerShell to a web service API – it’s nice to also be able to see your cloud components from within the same environment (Visual Studio) that you build them!
What’s interesting to me is that each cloud function (Compute, Service Bus, Storage, VMs) requires a unique set of credentials to view the included resources. So no global “here’s my Windows Azure credentials … show me my stuff!” experience.
For Compute, the very first time that I want to browse web applications, I need to add a Deployment Environment.
I’m then asked for which subscription to use, and if there are none listed, then I am prompted to download a “publish settings” file from my Windows Azure account. Once I do that, I see my various subscriptions, and am asked to choose which one to show in the Visual Studio plugin.
Finally, I can see my deployed web applications.
Note however, that there are no “properties” displayed for any of the objects in this tree. So, I can’t browse the application settings or see how the web application was configured.
To browse all the deployed bits for the Service Bus, I once again have to add a new connection.
After adding my Service Bus namespace, Issuer, and Key, I get all the Topics and Queues (not Relays, though) associated with this subscription.
Unlike the Compute tree nodes, all the Service Bus nodes reveal tidbits of information in the Properties window. For instance, clicking on the Service Bus subscription shows me the Issuer, Key, endpoints, and more. Clicking on an individual queue shows me a host of properties including message count, duplicate detection status, and more. Handy stuff.
To check out the storage (blob and table, no queues) artifacts in Windows Azure, I first have to add a connection to one of my storage accounts.
After providing my account name and key, I’m shown everything that’s in this account.
Unfortunately, these seem to follow the same pattern as Compute and don’t present any values in the Properties window.
How about the new, beta Windows Azure Virtual Machines? Like the other cloud resources exposed via this Visual Studio plugin, this one requires a one-time setup of a subscription.
After pointing it to my downloaded subscription file, I was shown a list of the VMs that I’ve deployed to Windows Azure.
When I click on a particular VM, the Visual Studio Properties window includes a few attributes such as VM size, status, and name. However, there’s no option to see networking settings or any other advanced VM environment settings.
While there’s not a specific entry for Windows Azure SQL Databases, I figured that I’d try and add it as a regular “data connection” within the Visual Studio plugin. After updating the Windows Azure portal to allow my IP address to access one of my Azure databases, and plugged in the address and credentials of my cloud database.
Once connected, I see all the artifacts in my Windows Azure SQL database.
Deploying and Updating Cloud Resources
So what can you create or update directly from the plug-in? For the Windows Azure plugin, the answer is “not much.” The Compute node is for (limited) read only views and you cannot deploy new instances. The Storage node is read-only as well as users cannot created new tables/blobs. The Virtual Machines node is for browsing only as there is no way to initiate the VM-creation process or change existing VMs.
There are some exceptions to this read-only world. The Service Bus portion of the plugin is pretty interactive. I can easily create brand new topics and queues.
However, I cannot change the properties of existing topics or queues. As for topic subscriptions, I am able to create both subscriptions and rules, but cannot change the rules after the fact.
The options for Windows Azure SQL Databases are the most promising. Using the Visual Studio plugin, I can create new tables, stored procedures and the like, and can also add/change table data or update artifacts such as stored procedures.
Testing Cloud Resources
As you might expect given the limited support for interacting with cloud resources, the Visual Studio plugin for Windows Azure only has a few testing-oriented capabilities. First, users of SQL databases can easily execute procedures and run queries from the plugin.
The Service Bus also has a decent testing story. From the plugin, I can send test messages to queues, and receive them.
However, it doesn’t appear that I can customize the message. Instead, a generic message is sent on my behalf. Similarly, when I choose to send a test message to a topic, I don’t have a chance to change it. However, it is nice to be able to easily send and receive messages.
Overall, the Visual Studio plugin for Windows Azure offers a decent, but incomplete experience. If it were only a read-only tool, I’d expect better metadata about the deployed artifacts. If it was an interactive tool that supported additions and changes, I’d expect many more exposed features. Clearly Microsoft expects developers to use a mix of the Windows Azure portal, and custom tools (like the awesome Service Bus Explorer), but I hope that future releases of this plugin have a more comprehensive coverage area.
In the next post, I’ll look at what Amazon offers in their Visual Studio plugin.