September 18, 2014
Hot Topics:
RSS RSS feed Download our iPhone app

Building in the Cloud with Azure Storage and the Azure SDK

  • November 12, 2009
  • By Matt Goebel
  • Send Email »
  • More Articles »

Introduction

Windows Azure and Azure Storage offers a new scalable and robust architecture that borrows much from the common feel of ASP.NET applications but brings plenty of new features as well. This paradigm shift from what has become traditional client-server architecture will offer new options to developers and headaches alike. While "the cloud" is not intended to be the answer for all applications and situations, it can only be a potential answer (another "tool" in the proverbial "tool belt") if you have at minimum a general understanding.

The following will provide you with a walkthrough experience of a cloud architected application. It will explore how to build a multi-role cloud service that uses two new Azure Storage services, Tables and Queues by covering the following:

  • Creating a Windows Azure application with a Web Role and Worker Role
  • Azure Storage
    • Set up configuration files with account information
    • Using a Table to store and retrieve data
    • Using a Queue to send messages to the Worker Role
  • Using the Azure SDK StorageClient project for Table and Queue interaction

If you are planning on following along with the code examples in your own environment here are the prerequisites you will need installed:

Important: Installing Windows Azure Tools for Visual Studio requires Vista SP1 or greater; Windows XP will not allow installation.

The below code and screen shots are based on the July 2009 CTP of Azure and are subject to change before the production release. Please consult up-to-date documentation after the release if certain functionality no longer works or has been changed.

The application built in the following walkthrough uses one Web Role to take two numeric inputs from a user and allows that user to come back later to view the results of adding them together. A Worker Role will be used to pick up a Queue message, retrieve the two inputs and add them together, storing the results back to Table storage. While using a Worker Role for simple addition is overkill, it will demonstrate all the necessary steps to architect your cloud application to maintain user interface responsiveness and scalability.

Creating a Windows Azure application

Before opening Visual Studio you'll have to get in the habit of running it as an Administrator when working on Azure projects. The Azure development fabric and storage, which comes with the Azure tools for VS, requires Administrative rights when you go to debug your application. You can think of the development fabric and storage as your own little mock cloud running locally.

In Visual Studio, after installing the Azure tools for VS, you will have a new project type option of "Cloud Service" with one template to pick. Give the project a name as you would with any new project, "MyCouldService" for this example.


Figure 1.1 - New Cloud Service
Click here for larger image

Figure 1.1 New Cloud Service

When you click OK, Visual Studio launches a wizard interface that allows you to add the following Roles to the Cloud service project.

Roles to the Cloud Service Project

Each role added will create a separate project file in the Visual Studio Solution Explorer. Before clicking OK you have the ability to rename each role by clicking on the pencil icon to the right of the role's name. This is useful when you have multiple Web or Worker roles that will be designated to perform different functions.


Figure 1.1 - New Cloud Service
Click here for larger image

Figure 1.2 Creating and Naming Cloud Service Roles

Click OK to finish the wizard. In the Solution Explorer window you will notice that in addition to the two role projects you added in the wizard there is a third project for the cloud service. Each cloud service solution has this additional project that contains the ServiceDefinition and ServiceConfirmation files. These files control the number of instances Azure will start of each of the role and Azure storage configuration among other things.

Since we will be using Azure Table and Queue storage open both the ServiceDefinition and ServiceConfirmation files and add the following to each respective file.

ServiceDefinition.csdef

  <?xml version="1.0" encoding="utf-8"?>
  <ServiceDefinition name="MyCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
    <WebRole name="MyAppWebRole" enableNativeCodeExecution="false">
      <InputEndpoints>
        <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
        <InputEndpoint name="HttpIn" protocol="http" port="80" />
      </InputEndpoints>
      <ConfigurationSettings>
        <Setting name="AccountName" />
        <Setting name="AccountSharedKey" />
        <Setting name="QueueStorageEndpoint" />
        <Setting name="TableStorageEndpoint" />
      </ConfigurationSettings>
    </WebRole>
    <WorkerRole name="MyAppWorkerRole" enableNativeCodeExecution="false">
      <ConfigurationSettings>
        <Setting name="AccountName" />
        <Setting name="AccountSharedKey" />
        <Setting name="QueueStorageEndpoint" />
        <Setting name="TableStorageEndpoint" />
      </ConfigurationSettings>
    </WorkerRole>
  </ServiceDefinition>

ServiceConfiguration.cscfg

  <?xml version="1.0"?>
  <ServiceConfiguration serviceName="MyCloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
    <Role name="MyAppWebRole">
      <Instances count="1" />
      <ConfigurationSettings>
        <Setting name="AccountName" value="devstoreaccount1" />
        <Setting name="AccountSharedKey" value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" />
        <Setting name="QueueStorageEndpoint" value="http://127.0.0.1:10001" />
        <Setting name="TableStorageEndpoint" value="http://127.0.0.1:10002" />
      </ConfigurationSettings>
    </Role>
    <Role name="MyAppWorkerRole">
      <Instances count="1" />
      <ConfigurationSettings>
        <Setting name="AccountName" value="devstoreaccount1" />
        <Setting name="AccountSharedKey" value="Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" />
        <Setting name="QueueStorageEndpoint" value="http://127.0.0.1:10001" />
        <Setting name="TableStorageEndpoint" value="http://127.0.0.1:10002" />
      </ConfigurationSettings>
    </Role>
  </ServiceConfiguration>

For development the AccountName and AccountSharedKey values are fixed to what is shown above(When working with the development environment you must use that name and key). This allows you to test your authentication code when accessing and storing data in Azure Storage.





Page 1 of 4



Comment and Contribute

 


(Maximum characters: 1200). You have characters left.

 

 


Sitemap | Contact Us

Rocket Fuel