Archive for October, 2010

Windows Azure

Technical Basics


Windows azure platform is designed specially to run applications and store data on the cloud.  It provides a based compute and storage services for cloud computing.

On windows Azure developers can build their own application using the .NET Framework or any other approach.  They can also write their code with any windows languages (C++, C#, Java, etc ).  To have more control on your application and the way you want to server your clients, each application has a configuration file which can help the user to configure his application programmatically or manually (like defining the number of instances you want for the application).

Each instance, created by Windows Azure automatically, runs on its own virtual machine. You can create as much as you need of instances. Your AppFabrics then monitors your instances and show what are they executing.

Let’s have a deeper look on Windows Azure. We will find that there are 2 main different things:

1- Running application on the cloud or on your device.

2- Storing data on the cloud.

For running application on the cloud or on your device there are:

WebRole is like a normal ASP.NET web application, where you can develop and design what you want to. It is used to interact with the user, accepts HTTP (or HTTPS) request via the Internet Information Service (IIS).  The WebRole contains IIS hosted web core used to host web sites.

WorkerRole: is like a WebRole, it does not contain IIS webCore that’s why it is made for applications similar to windows Service.

The WebRole and the WorkerRole can communicate with each other; whether by WCF (Windows Communication Foundation) provided by the windows Azure Storage service, or by a queue.  The WebRole instance can be inserted in a queue and the WorkerRole can remove or process this item.

For Storing Data on the Cloud, there are a lot to talk about. First of all how Windows Azure deals with the storage data?

Before we go into details, I would like to define some new words that will be used in the explanation.

1- Storage Account: All access to storage services takes place through the storage account. The storage account is the highest level of the namespace for accessing each of the fundamental services. It is also the basis for authentication.

2- Container: The container resource includes metadata and properties for that container. It does not include a list of the blobs contained by the container.

3- The Storage Services now offers two types of blobs:

a- Block blobs, which are optimized for streaming.

b- Page blobs, which are optimized for random read/write operations and provide the ability to write to a range of bytes in a blob.

There are different ways how Windows azure deals with data.  The simplest way to store data in windows Azure is by using the BLOBS (Binary Large Objects).  Developers create Storage Accounts and each storage account contains one or more containers, and each container contains one or more Blobs.  The Blobs can be big as Terabyte but it is subdivided into blocks. If you are dealing with a blob less or equal to 64 Megabyte, than you can consider it as single blob.

Blobs are too unstructured for many usages, so there is another way to deal with data.  It is with Tables.  They aren’t relational tables. Each Table variables are stored in a set of entities with properties, each table can also have different types, int, bool,etc.   To make it easier there is no need to use SQL, an application can access the data using ADO.NET or LINQ.

Third is the QUEUE, it may have different main purposes, not just for storing data but to settle a communication between the WebRole and the WorkerRole.  ALL KIND OF DATA STORED ON WINDOWS AZURE PALTFORM IS REPLICATED 3 TIMES. EVERYTHING IS DEFINED BY AN URI (Uniform Resource Identifier).

The AppFabrics is the Cloud based infrastructure.  Its main purpose is to fill the gap between the running applications and storing the data on the cloud.  It has 2 main components:

1- Service Bus,

2- Access control.

Access control: it provides the server application with identity information. Based on the identity information, an application can now make decisions about what that user is allowed to do.

Service bus: if your application is on Windows Azure how can your clients find your application on the cloud and connect to it?  Now using the Service bus, your application gets endpoints so your clients can access your application over the cloud.

More and more blogs will be followed.