By Josef Finsel on 6/23/2009 7:02 PM
As I said in my last post, the Worker Role should be an extremely light wrapper that calls a class that does all of the real work. There are two good reasons for this. First, the less code in the Worker Role, the less debugging you need to do in the Development Fabric, the easier it will be to write, test and debug your code. Second, the code in the Worker Role should be fairly stable. If all it is doing is instantiating a class and calling it every few seconds, it lessens the chances of errors happening in the Cloud version that will require major changes. Follow the basic rule of Keep It Super Simple when it comes to your Worker Role. The class that the Worker Role is instantiating should include a call back function... Read More » |
By Josef Finsel on 6/23/2009 6:54 PM
Windows Azure isn't just about Azure Storage Services, it's also about running hosted programs in the sky. And this is actually a critical part of Azure Storage Services, even though it may not seem like it. The series so far has introduced Azure Storage Services and talked about what you can do with each of the pieces, but the time has come to take it to the next level, which includes taking care of some of the management issues that SQL Server and other RDBMSs do for us. Now, I have said that one of the reasons that Azure Table Storage scales better than SQL Server is because it is simpler and doesn't have all the overhead of managing the data that SQL Server does. And you might accuse me of reinventing the wheel. But there are certain pieces of data management that make sense. Take what SQL Server does when we ask it to process something like this: Read More » |
By Josef Finsel on 6/23/2009 6:41 PM
Creating and Retrieving Blobs with BlocksIf you want to upload a large file to Azure Blob Storage (ABS), you're going to need to split it into pieces and transmit the individual pieces. Then, when you get them all uploaded, you tell the server to assemble them. This is all done using Blocks, which may be up to 4MB in size. It sounds complicated, but it isn't really. The first thing you do is split the file into 4MB blocks. If you have a Byte Array, this is easy enough to do. Then, you upload each block to the server using PUT and the URI of http://{account}.blob.corewindows.net/{Container}/{Blob}?comp=block&blockid={blockid} (CanonicalURL is Read More » |
By Josef Finsel on 6/23/2009 6:35 PM
Today I venture into Azure Blob Storage. If you want to follow along, download a copy of my AzureCommand class. You also might want to create an Microsoft Azure Account. I should state that I am not looking at the locally hosted development storage, only at the cloud hosted one. When we talk about BLOBs, we are talking about Binary Large Objects, not an amoeba like alien that terrorized Downington, PA (although it appears that a blob is a blob and not really a BLOb). And BLOBs generally can be thought of as files. These files exist in... ContainersContainers in Azure Blob Storage (ABS) Read More » |
By Josef Finsel on 6/23/2009 6:28 PM
When one thinks Queues, one may conjure up many different images. Microsoft has MMQ and has implemented Service Broker, both as means of having stateless communication. Azure Queue Storage (AQS) is similar. The stated reason for using AQS is to be able to kick off Azure Worker Roles, but you can actually use AQS for any type of stateless communication. AQS consists of two parts: Queues and Messages. Queues, like Tables in ATS, are really nothing more than defined URIs that can be used to store and retrieve messages.Messages are nothing more than text packets (up to 8KB) that can be stored and retrieved from a specific URI. So, let's dig in. Read More » |
By Josef Finsel on 6/23/2009 6:22 PM
Today I'm going to look deeper at some aspects of Azure Table storage that didn't make it into the last post. If you want to follow along, download a copy of my AzureCommand class. You also might want to create an Microsoft Azure Account and load in some data. If you're looking for some data to play with, load a copy of test data. I should state that I am not looking at the locally hosted development storage, only at the cloud hosted one. Read More » |
By Josef Finsel on 6/23/2009 6:09 PM
As Microsoft uses a REST-ful API, I'll be talking about what HTTP Method needs to be called; what special headers, if any, need to be included, and what you can expect to get back. If you have an account with data, you can follow along at my Azure Table Storage Web Interface, where you can enter your own account information and see what happens. Also, before we dig too deeply, ATS uses an Atom format. If you can read XML, you should be able to follow the data. You may want to brush up on XML with Namespaces but the code will cover everything we need. Azure Table Storage (ATS)Azure Table Storage (ATS) is a slightly misnamed tool. Read More » |
By Josef Finsel on 6/23/2009 6:00 PM
Today I'm going to continue talking about Azure Storage by talking about Security and how it's implemented. If you want to follow along, download a copy of my AzureCommand class. There are many ways to implement security on the web. The original SQL Server Data Services that Microsoft debuted in 2008 used basic auth. For whatever reason, Microsoft decided that wasn't the way to go so they implemented two different security schemes for Azure, one for Table Storage and one for both Queues and Blobs. But they share some similarities so we'll talk about them both at a high level before we dig into the specifics. Read More » |
By Josef Finsel on 6/23/2009 5:55 PM
Microsoft's latest Cloud Computing offering is called Azure. (You can sign up for an account here if you want to follow along.) Azure is made up of two different parts: Azure Hosted Services and Azure Storage Accounts. Over the course of these blog posts, we'll be covering both and how to access them using a library that can be used with VS2005 from XP, but we're going to start with a quick overview of Azure Storage Accounts today. Azure Table Storage (ATS)Azure Table Storage (ATS) is a slightly misnamed tool. It's really Read More » |