Friday, August 15, 2014

Azure Storage Explorer Preview 3 Now Available: Queue Support, Blob and Table Enhancements

I'm pleased to announce that the next installment of Azure Storage Explorer 6, Preview 3, is now available. Preview 3 adds Queue support along with expanded blob and table features. We've already posted a detailed walk-through of Preview 1 and Preview 2; now let's take a tour of what's new in Preview 3.

Queue Support

Preview 1 provided Blob support and Preview 2 added Table support. Now in Preview 3 you also have Queue support. Similar to how blob and table support work, you have a list of queues in your outline at left. When you select a queue, the top messages in the queue are listed in the main pane at right.

Message List

Actions you can take on queues include creating a queue, deleting the selected queue, or refreshing the queue list. Actions you can take on queue messages include refreshing the message list, creating a new message, creating a copy of an existing message, or popping the top message off of the queue (deleting it). When creating or copying a message, you enter or edit the message text that is to be inserted into the queue.

Creating a New Message

Enhanced Blob Support

We've made several enhancements to blob support. The earlier previews did not include the $logs container, which will exist if you have turned on logging and monitoring for your blob storage. This container is now listed if present.

Earlier previews did not show all blobs in the selected container, such as blobs with virtual directory paths in their name. The blob list is now exhaustive, showing you everything in the selected container.

Content Types

You can now configure a table of content types, which is used to set the Content Type property for a blob that you upload. This matters if blobs are read from public storage by a web browser, as the ContentType header helps the browser figure out how to handle the resource. The Content Type table is a simple table of file extensions and MIME types: if the file you upload ends with an extension listed in your table, its content type is set to the corresponding MIME type. You can view or edit the Content Types list from the top right settings menu ("Edit Content Types").

Editing Content Types for Uploaded Blobs

Enhanced Table Support

Table enhancements include a reordering of columns to put PartitionKey first, and a new upload capability. 

The table support that arrived in Preview 2 provided a means to download entities to CSV, JSON, or XML format - but had no matching upload capability. In Preview 3, you can also upload to tables.

When viewing a table, click the Upload button. On the dialog that appears, select the file containing data to upload and review the format selections and options.

CSV Upload

A CSV upload reads a comma-delimited text file for input. This is a popular simple export format that Excel can be used to edit. Azure Storage Explorer uses the CsvHelper library to parse your data file and insert entities.

When inserting entities, a partition key and row key are required to uniquely identify each entity. In the event your CSV file uses different column names for PartitionKey and RowKey, you can specify on the upload dialog the column names to use.

CSV Upload

Here is an example of valid CSV data that can be uploaded to a table:

Batman,DC Comics,8/6/2014 4:07:06 AM +00:00,5/1/1939 12:00:00 AM,Bruce Wayne
Green Lantern,DC Comics,8/6/2014 4:10:52 AM +00:00,7/1/1940 12:00:00 AM,Hal Jordan
Superman,DC Comics,8/6/2014 4:06:52 AM +00:00,4/18/1938 12:00:00 AM,Clark Kent
The Flash,DC Comics,8/6/2014 4:06:58 AM +00:00,1/1/1940 12:00:00 AM,Bart Allen
Iron Man,Marvel Comics,8/6/2014 4:07:58 AM +00:00,3/1/1963 12:00:00 AM,Tony Stark
The Human Torch,Marvel Comics,8/6/2014 4:13:02 AM +00:00,11/1/1961 12:00:00 AM,Johnny Storm
The Thing,Marvel Comics,8/6/2014 4:12:07 AM +00:00,11/1/1961 12:00:00 AM,Ben Grimm
Thor,Marvel Comics,8/6/2014 4:08:58 AM +00:00,8/1/1962 12:00:00 AM,Donald Blake

JSON Upload

A JSON upload reads a JavaScript Object Notation (JSON) format text file for input. JSON is a very popular web transfer format in wide use today. Azure Storage Explorer uses the .NET JavaScriptSerializer to parse your data file and insert entities.

As with CSV uploads, you can specify the field name to be used for RowKey and PartitionKey. In addition, you specify the enclosing object name for the JSON.

JSON Upload

Here is an example of valid JSON data that can be uploaded to a table:

    "Entities": [
            "RowKey": "Batman",
            "PartitionKey": "DC Comics",
            "Timestamp": "8/6/2014 4:07:06 AM +00:00",
            "Debut": "5/1/1939 12:00:00 AM",
            "SecretIdentity": "Bruce Wayne"
            "RowKey": "Green Lantern",
            "PartitionKey": "DC Comics",
            "Timestamp": "8/6/2014 4:10:52 AM +00:00",
            "Debut": "7/1/1940 12:00:00 AM",
            "SecretIdentity": "Hal Jordan"
            "RowKey": "Superman",
            "PartitionKey": "DC Comics",
            "Timestamp": "8/6/2014 4:06:52 AM +00:00",
            "Debut": "4/18/1938 12:00:00 AM",
            "SecretIdentity": "Clark Kent"

XML Upload

An XML upload reads an XML file as input, another popular exchange format. Azure Storage Explorer uses the .NET XmlDocument class to parse your data file and insert entities.

As with CSV uploads, you can specify the field name to be used for RowKey and PartitionKey. In addition, you specify the XPath path to locate entity elements in the XML.

XML Upload

Here is an example of valid XML data that can be uploaded to a table:

<?xml version="1.0" ?>
<Entities xmlns:xsi="">
    <PartitionKey>DC Comics</PartitionKey>
    <Timestamp>8/6/2014 4:07:06 AM +00:00</Timestamp>
    <Debut>5/1/1939 12:00:00 AM</Debut>
    <SecretIdentity>Bruce Wayne</SecretIdentity>
    <RowKey>Green Lantern</RowKey>
    <PartitionKey>DC Comics</PartitionKey>
    <Timestamp>8/6/2014 4:10:52 AM +00:00</Timestamp>
    <Debut>7/1/1940 12:00:00 AM</Debut>
    <SecretIdentity>Hal Jordan</SecretIdentity>
    <PartitionKey>DC Comics</PartitionKey>
    <Timestamp>8/6/2014 4:06:52 AM +00:00</Timestamp>
    <Debut>4/18/1938 12:00:00 AM</Debut>
    <SecretIdentity>Clark Kent</SecretIdentity>

The default option for error handling is to stop on the first error. The alternative option is to continue past errors and continue uploading.


Azure Storage Explorer 6 continues to move rapidly toward completion. There are now sufficient features in place that we've made it the default version for download on CodePlex. I hope you find it useful and productive to use.

Tuesday, August 5, 2014

Azure Storage Explorer 6 Preview 2 Now Available, with Table Support

I'm pleased to announce that the next installment of Azure Storage Explorer, Preview 2, is now available. The big feature in Preview 2 is table support, allowing you to create, delete, and work with with tables and entity records. In addition, we've made some UI improvements and extended our blob support. We've already posted a detailed walk-through of Preview 1, now let's take a tour of what's new in Preview 2.

User Interface Changes

Blob List and Table List Styling
The main pane list view (showing blobs or table entities) now shows alternating rows in contrasting shades of grey. Selections are highlighted in the color associated with the artifact (yellow for blobs, blue for table entities).

Updated Styling of Blob List

Blob List Filters
One thing we've been thinking about is how to limit the display when you have a large number of blobs or table entities in a container; if you have thousands of items, you likely don't want them all listed every time you click on a container or table. In version 5 we implemented results paging, but in version 6 we wanted to do something more versatile. You can limit what is displayed with the new Filter toolbar button. For blobs, this lets  you specify filters such as max records to display, blob type, search text to match, or min and max sizes. You have a similar facility for table entities.

Filter Dialog for Blob List

When filters are active, the Filter toolbar button is highlighted so you're aware you're not seeing all results.

Filtered Blob List

Error Messages
Instead of pop-up dialogs for error reporting, error messages now smoothly stack on the bottom of the main pane, just as background tasks do.

Stacking Error Messages

Table Storage Support
Preview 2 introduces table storage support. When you navigate to a table in the left pane outline, you'll now get a list of entity records and toolbars for acting on the table and its entities.You can click on a column to sort by that property; click a second time to change ascending/descending direction.

Table Entity List

Table Entity Queries
Instead of retrieving all entities from the table, you can specify a query. The Query toolbar button allows to select up to three sets of columns, conditions (equals, not equal to, contains, starts with, ends with), and values. LINQ is then used to retrieve matching entities and the list is refreshed.

Table Query Dialog

Table Entity Filters
You can further restrict your entity list by specifying filters. These include a maximum entity count to display and search text. You can also control which columns should be displayed or hidden in the result list. You can click the check box to save these filter settings as a default.

Table Filter Dialog

Filtered Entity List

Creating, Copying, Editing, and Deleting Entities

You can use the toolbar buttons to create, modify, and remove individual entities.

Creating a New Entity
To enter a new entity, click the New Entity toolbar button and complete the record definition in the dialog that appears. You can add one or more records from here. You can enter binary (01 02 03...), boolean values (True/1/Yes/On, False/0/No/Off), DateTime values, numerics (double, Int32, Int64), GUIDs, or Strings. To not store a field, either set the type to Null or remove the field from the list.

Insert Entity Record Dialog

Updating an Entity
To update an entity, either double-click it or select it and click the View toolbar button. You can modify and update the record.

Copying an Entity
To copy an entity, select it and click the Copy toolbar button. Update the record (minimally changing RowKey/PartitionKey).

Deleting Entities
To delete entities, select one or more entities and click the Delete toolbar button. Confirm the dialog to perform the delete.

Delete Entities Confirmation Dialog

Table Entity Downloads
When viewing a table, you can download selected entities, or all entities, using the Download toolbar button. On the download dialog, select a file format and an output file. You can download to CSV, JSON, or XML format.

Entity Download Dialog

CSV Download
The comma-separated values (CSV) format can be opened in Microsoft Excel.

Result of CSV Download 

JSON Download
The JSON download is one of the more popular web data exchange formats today.

Result of JSON Download

XML Download
The XML download provides another commonly-used data exchange format.

Result of XML Download

With Preview 2, we've added a significant amount of table functionality to the blob functionality from Preview 1. We hope you find Azure Storage Explorer 6 useful and productive as we continue to move it forward. Do keep in mind the software is still very new and only in preview - please exercise appropriate caution as you use it.

Next: Azure Storage Explorer Preview 3

Thursday, July 31, 2014

A Tour of Azure Storage Explorer 6 Preview 1

I recently announced that work had resumed Azure Storage Explorer and that a new version (v6) was in the works. In this post, we'll take a tour of Preview 1, which is available now at

Let's start by reminding ourselves how important the Storage Service is. The Storage Service was one of the first services available in Microsoft Azure, and it remains a core, vital part of the platform. Even though a wealth of new services have been added to Azure over the years, a great many of them are built on top of the Storage Service. For example, it's where VHD images reside for the Compute Service.

Let's begin with broad strokes. Azure Storage Explorer 6 isn't finished yet, but we have much of the blob support in place. Since blob storage is arguably the most-used part of Microsoft Azure Storage, this seemed useful enough to make available in a preview release, and that's what you'll get if you download Preview 1. That means you'll have to wait on Table and Queue support, which still need to be implemented. Stay tuned to this blog for updates. It also should go without saying that incomplete software in preview should be treated as new and untested; early adopters should exercise caution and take care not to endanger critical or non-replaceable data.

The User Interface
When we created the predecessor version of Azure Storage Explorer, version 5, we worked to match the then-new styling of the Windows Azure portal. We've decided to stop doing that and return to a simpler look reminiscent of Windows File Explorer. You'll see a refinement of the styling as we iterate through the next few preview releases.

When you first launch Azure Storage Explorer 6, the main window won't show much other than a header that contains a combo box for selecting a storage account to view. To the right are buttons to add a  new storage account or remove the selected one. We'll see how to add and work with storage accounts in the next two sections. The remainder of the main window is a tab control, in which you can open tabs for one or more storage accounts.

Main window header for selecting, adding, or removing a storage account

Once you have your storage account(s) defined, selecting one will open a tab in the main window. The left pane is a tree of blob containers, queues, and tables. Selecting an item in the left pane opens its contents in the main window (only blobs at present).

Main window with a storage account tab open

At the top right is a gear icon. Click or right-click here for a tools menu with options to visit web sites (Microsoft Azure Management Portal, Azure Storage Explorer home on CodePlex) or see an About dialog with version information. As we add settings in subsequent updates, additional menu items will appear here.

Top-right Tools Menu

Adding a New Storage Account
To add a new storage account, click the Add Account button in the header and a New Storage Account dialog will appear.

Add Storage Account dialog

If you're wanting to access a local developer emulator account, select Local Developer Account. Otherwise, you'll need to know some things about your Microsoft Azure Storage account in order to complete the dialog, which you can get from the Microsoft Azure Management Portal:

• The storage account name
• The storage account key (this can be either the primary key or the secondary key)
• Whether the storage account uses a standard endpoint (US, Europe, Asia, Brazil, Japan), a China endpoint (Beijing, Shanghai), or a custom endpoint

Then, it's just a matter of entering the name and key and selecting the endpoint. If you want SSL communication, click Use HTTPS.

Next, click Test Access to verify the storage account is accessible (if you're working with local developer storage, launch the storage emulator first).

Verifying a New Storage Account

Once you've verified the account is accessible, click Save to add the new account, which will now appear in the main window's account list. The storage account information is written to a local file for your Windows user, and is encrypted.

Working with Storage Accounts
Once you've defined some storage accounts, simply select an account name from the list to open up a tab for it. You can open more than one tab.

Several Storage Account Tabs Open

If you want to open up a tab for every one of your storage account, select (all) from the account list. You'll likely experience a slight delay as storage accounts load; we're working to make this smoother and take place in the background so it doesn't tie up the user interface.

All Storage Account Tabs Open

To close an open tab, either click the close box next to its name, or select Storage Account > Close Tab from the menu.

Working with Blob Containers
When you have a storage account tab open, there are operations you can perform on both blob containers and the blobs within those containers.

Blob containers are listed in the left pane, under the outline item named "Blob Containers".

Blob Service Operations
When you select the "Blob Containers" item in the left pane, you have toolbar buttons for operations on the blob service: Refresh, New Container, and CORS Settings.

Blob Containers Outline Item and Toolbar

Refresh Container List button
The Refresh toolbar button refreshes the list of containers.

New Container button
The New toolbar button creates a new blob container. Specify a name for the container.

New Blob Container Dialog

CORS Rules button
The CORS toolbar button allows you to view or modify the Cross-Origin Resource Sharing (CORS) settings for the entire storage account. CORS is powerful in that it permits authorized web clients to directly access blob storage without having to go through a server, which is normally a security requirement. Add one or more rules, specifying allowed origin(s), allowed HTTP method(s), allowed headers, exposed headers, and max age in seconds. If you need to specify multiple values in a field, separate them with commas. You can add, edit, and delete rules in this dialog.

CORS Rules Dialog

Blob Container Operations
When you select a container, the right pane lists the blobs in the container and the left pane toolbar offers buttons for container actions: Refresh, New, Delete, and Security. We've already covered what Refresh and New do.

Delete a Container
The Delete toolbar button displays a confirmation dialog and deletes the selected container and all blobs within it.

Delete Blob Container Confirmation Dialog

Container Security
The Security toolbar button displays a dialog with two tabs, one for controlling the container's access security and the other for generating shared access signature URIs.

On the Access Level tab, you can view of modify the container's access level. There are 3 levels: Off means the container and its blobs can only be accessed by API with account credentials. Public Blob means the container's blobs can be read anonymously via URIs. Public Container means the blobs can be read anonymously and the container metadata can be accessed anonymously.

Container Security - Access Level Tab

On the Shared Access Signatures tab, you can generate ad-hoc Shared Access Signature URIs. This is a way of giving some parties a custom level of access to your blob container for a period of time. First specify the date range and allowable actions, then click Generate Signature. If you had a blob selected in the main pane, its name will be entered in the dialog automatically for you and included in the URI. The generated URI is copied to your clipboard, and you can test access in a browser by clicking the Test in Browser button. Note there isn't support yet for creating and using saved SAS policies; that will be coming in a future update.

Container Security - Shared Access Signatures Tab

Working with Blobs
When you select a container in the left pane, you can work with its blobs in the main pane. You can click on columns to sort by that column, in ascending or descending order. Unlike some prior versions, this view is not paged so you will see all blobs. We're currently thinking through how we will make this work well for containers that contain many thousands of blobs, and what kind of search and filtering controls we should add.

Blob List for a Selected Container

The main pane has a toolbar for blob operations, which provides these actions: Refresh Blob List, Select All, Clear All, Upload, Download, View, New Blob, Copy Blob, and Delete Blob.

Blob Toolbar

Refresh Blob List
The Refresh toolbar button reloads the list of blobs for the container and refreshes the list of blobs.

Selecting Blobs
You can select a blob by clicking its row, or deselect it by clicking it again. You can select a range of blobs by shift-click, or add/remove additional blobs by control-click. To select all blobs, click the Select All toolbar button. To clear all selections, click the Clear All toolbar button.

Uploading Files to Blob Storage
To upload one or more files to the selected container, click the Upload button. Select one or more files in the Open Files dialog and click Open to start the upload, or cancel to abort the action. Blobs are uploaded in the background without tying up the user interface; when the upload is complete, the blob list will refresh automatically.

Open Files Dialog for Uploading

In a future update the software will have an editable table of file types and MIME types that will be used to auto-assign the ContentType property of an uploaded  blob based on its name (for example, assigning a .jpeg file a content type of "image/jpeg"). In the meantime, you can manually set a blob's ContentType with the View toolbar button.

Downloading Blobs to Local File Storage
To download the selected blob(s) to your local file system, click the Download toolbar button. In the Folder Selection dialog, select the target folder and click Select Folder to begin the download, or Cancel to abort the action. Blobs are downloaded in the background without tying up the user interface.

Choose Blob Download Folder Dialog

As you perform uploads, downloads, or other long-running tasks, you'll see a status message on the bottom of the main window. If there are several tasks in progress, multiple status messages will stack vertically. There currently isn't any way to abort these tasks once you kick them off, but we'll be providing a way to cancel tasks in a future update.

Viewing Blobs
You can view or modify a selected blob's properties and content, either by clicking the View toolbar button or double-clicking the blob name. You'll see a Properties tab, a Content tab (block blobs only), and a Pages tab (page blobs only).

Viewing Blobs - Properties Tab
On the Properties tab, you'll see the blob's many properties listed, including Blob Type, Name, Length, Uri, Last Modified, and much more. Most of these values are read-only, but several of them are modifiable such as Content Type and Content Encoding (marked with an asterisk). Click the Update Properties button to apply updates to properties.

View Blob - Properties Tab

Viewing Blobs - Content Tab
For block blobs, the Content tab allows content to be viewed in a variety of formats including Image, Text, Video, and Web. 

Use Image View to view images, and Video View to view video content. If the blob is not in a valid format for these views, you'll receive an error message.

Image View

In the Text View, you can also edit the blob text and save changes.

Text View

Web View shows content via a web browser control, which can accommodate many kinds of content, from PDF documents to image files to HTML markup to XML data. Note that to use the Web viewer, as well as the Video viewer, your blob container access level must be Public.

Web View

Editing Page Blobs
For page blobs, there is a Pages tab which allows you to read and write pages of the blob. The list box at left shows pages currently allocated in storage for the blob; select a page to see its content at right as hex bytes. You can also read pages by entering a page number and clicking Read Page, or use the Prev / Next buttons to move through the blob's pages. 

To write data, enter up to 512 bytes of hex data in the text box and click Write Page. If you enter less than 512 bytes, the sequence you entered will repeat to fill a 512-byte page. So, just entering 00 and clicking Write will write a full page of 512 0's.

View Blob - Pages Tab

Creating a New Blob
Click the New toolbar button to create a new blob. In the dialog, specify a type and name for the blob. For a block blob, you can optionally enter text to store in the blob.

Create New Blob Dialog - Block Blob

For page blobs, specify a size for the blob in bytes, kilobytes, megabytes, or gigabytes. Creating a page blob does not initialize its pages; in Microsoft Azure, only the pages you specifically write to consume storage.

Create New Blob Dialog - Page Blob

Copying a Blob
The Copy toolbar button copies the selected blob. This is a very powerful facility, which can copy the blob into the same container (under a different name); to a different container; or even to a different storage account that may be in a different data center.

Copy Blob Dialog

Down the road, we'd like to add some bulk copy capabilities that would allow you to copy a collection of blobs or containers in one easy operation.

Deleting Blobs
The Delete toolbar button permanently displays a confirmation dialog and deletes the selected blob(s).

Delete Blob Confirmation Dialog

Well, that ends our tour of Azure Storage Explorer 6 Preview 1. We've taken a peek into every corner. The majority of core blob support is in place, with a few additional operations and refinements needed as we've noted. The new code base and user interface is underway, and we'll be refining that as well.

What's next for Azure Storage Explorer 6? As we start our next phase of work, we'll be focusing on adding table storage support. We'll be posting articles here as new updates become available, and you can also subscribe to automatic notifications about new updates on CodePlex.

Lastly, if you're interested in being a contributor please contact me. We've gone through a lot of work to put together an updated code base, and part of the reason for that is to enable community collaboration.

 I hope you find Azure Storage Explorer 6 useful.

Wednesday, July 30, 2014

The Phoenix is Rising: Azure Storage Explorer 6

I'm very excited to announce that, after a long hiatus, work is progressing rapidly on the next version of Azure Storage Explorer and Preview 1 is now available on CodePlex. In this post I want to provide some background context on why the long wait and what you can look forward to in version 6 of Azure Storage Explorer, the "Phoenix" release. In my next post, we'll review Preview 1.

Where We've Been: Azure Storage Explorer versions 1 through 5
I've been involved with Windows Azure from the very beginning, and was honored to be selected as one of the inaugural MVPs by Microsoft. One of my first year contributions was Azure Storage Explorer, a tool for working with Storage Service accounts (blobs/queues/tables). Although there are multiple storage tools available today (both free and commercial), I believe Azure Storage Explorer was the first such tool for Microsoft's cloud platform.

Over the next few years, as the platform grew and extended, we periodically revised or rewrote Azure Storage Explorer, adding support for things like Shared Access Signatures and Logging Policy. By 2012, we were up to a beta of version 5. At that time, the Windows Azure portal had just undergone a major UI change and we styled ASE v5 to match. It looked like this:

Despite some pauses in regular upkeep, Azure Storage Explorer has become pretty popular. If you visit the Azure Storage Explorer CodePlex site, you'll see that there have been, as of this writing, a whopping 184,000+ downloads overall. That's pretty inspiring and humbling. I've been writing software for 35 years, of all varieties, but this has to be the one thing I've done with the broadest adoption.

The Pause
Over the last two years, however, there haven't been any updates to Azure Storage Explorer. If you work in software, then you know time is the enemy of software. The mere passing of time can turn a useful tool into a limited one as platforms change.

So why the pause? Well, I didn't stop working on the Microsoft cloud platform, and I didn't leave Neudesic, and I didn't stop being a software engineer, and I didn't stop valuing community work. But I did have some things going on that made it very difficult to work on Azure Storage Explorer or even to blog.

The pause in upkeep has been due to a combination of medical problems and a very busy project schedule on my part. I've had to work through some challenging orthopedic problems. In 2012 I suffered a tendon tear in my right arm that put me in a lot of pain and made it difficult and painful to do many everyday activities (such as getting dressed!). It took months to get diagnosed and then more months of treatment and therapy to restore use of my right arm. That was bad enough, but I'm now going through the same thing all over again with my left arm! Combine all of that with some ultra-busy projects at work (you know, the kind where you and your team are working around the clock to meet deadlines), and there just hasn't been any bandwidth for Azure Storage Explorer. Or blogging. Or speaking.

But wait a minute, you say. This is the era of open source and community software development. Surely there are others who would like to help work on Azure Storage Explorer. Indeed there are, and a number of talented folks have offered to assist. However, we weren't in a good position for that with version 5 because a lot had changed:

• The Microsoft Storage Client library had changed significantly, now up to version 4, with breaking changes.
• The MSI setup project we used for installation is no longer supported in Visual Studio.
• The way local developer storage is accessed has changed in the platform.
• New data centers in China require tools to use a different set of storage service endpoints.
• Even the name of the platform has changed, now known as Microsoft Azure.
• Our source tree had branched and fragmented a bit too much, and some reconciliation was needed.

All of the above amounted to this: we didn't have a very good starting point that would build with modern tools/frameworks or function well with the current cloud platform. I felt we needed a fresh start with an updated code base if we were going to be able to run this well as an open source project.

Azure Storage Explorer version 6
And so, that brings us to Azure Storage Explorer version 6. I've been able to carve out some time here and there, and we now have a good start on a new code base. Enough to release Preview 1, which is now on CodePlex.

These are some of our objectives for Azure Storage Explorer 6:

• A Visual Studio 2013 WPF solution.
• Uses the latest .NET Storage Client Library, v4.0.
• Uses InstallShield LE (included with Visual Studio)
• The WPF solution uses the Task Parallel Library (TPL) to handle asynchronous tasks
• Has an updated user interface.
• Source code online.
• Set up as an open source project to allow for collaborative contributions.
• Updated for the latest cloud platform.
• Supports configurable storage service endpoints, for example to support data centers in China.
• Has support for newer platform features, such as CORS.

A lot of the improvements in version 6 are subtle and have to do with small improvements that add up to a lot of usability. For example, we've previously had Copy Blob operations, but in version 6 you can copy to any container you want, even in another storage account in another data center. You were previously able to edit block blobs, but now you can also edit page blobs.

With this new code base, we're well-poised to take Azure Storage Explorer places. Once we match the basic feature set past versions have provided, we'd like to add some compelling new capabilities and also take advantage of new Microsoft Azure features (stay tuned for details). Most importantly, we can have multiple contributors involved which means my personal availability won't be a bottleneck in keeping the tool maintained.

The just-released Preview 1 supports blob operations only. Table and queue support will be coming in subsequent updates. Should you upgrade to version 6? If some of the pain points mentioned earlier have been affecting you and you don't mind being an early adopter, yes. If you need table or queue support, or prefer not to be on the bleeding edge with new software, then you might to wait for a later update.

In my next post, we'll take a tour of Preview 1.