Windows Azure – Final Updates to PhotoStore App!


So I wanted to do a round out post on my little blob project, PhotoStore.

Tonight I added the last bit of functionality which was to enable adding a description of the photo and storing it that against the photo as metadata.

image

To recap, here is the functional/service matrix from my app:

App F(x) Platform F(x)
Create Album Create Container
Delete Album Delete Container
List Albums List Containers
List Pictures List Blobs
Show Picture Get Blob
Upload Picture Put Blob
Set Picture Description Set Blob Metadata
View Picture Description Get Blob Metadata

The one area of functionality I did not implement for this sample was the support for large files which would have required the use of the block operations (put block, get block list, put block list), so if you get around to doing that, please drop me a line with the updated BlobRequest.cs file. 🙂

My next project is to explore the queue service, and in my head, I want to build a sample that demonstrates not only a web role and worker role communicating over the queue service, but also a WPF (or similar RIA/OBA/local machine app) communicating via the queue too.

Happy coding 🙂

Technorati Tags: ,

Comments (3)

  1. David,

    Tried your app this morning. I could create an album but wasn’t able to upload an nominal-size image.

    The RestBlobStorateclass’s PutLargeBlobImpl() method automatically handles chunking into blocks if the stream is longer than the ChunkingSize (2 MB).

    I happen to be working on a similar demo project that uploads local and SkyDrive images.

    –rj

  2. davidlem says:

    @rj Hi Roger, I just restarted the service and it seems to working as normal now. Good call on the RestBlobStorage class, I purposely decided on developing my own middleware for blobs from scratch to understand the inner workings, and in that situation, the decision to use blocks needs to be handled in the logic of the code (as in, if size > x use block, if not, use normal put). Thanks for the comment, Dave 🙂