To me Azure is a new technology but in fact it's not that new. In the PDC08 Microsoft announced that their cloud computing platform had been released with the name Azure, which stand for the color of the sky. I began to play with Azure recently and will post a series of blogs for what it is and how to use it. But first of all we'd better to understand what's Azure.
If we went to the official website of Azure we can find the official definition.
The Windows Azure platform offers a flexible, familiar environment for developers to create cloud applications and services. With Windows Azure, you can shorten your time to market and adapt as demand for your service grows.
It said Azure provides a flexible and familiar environment where we can establish our application and service. The 'flexible' means that we can chose the services the Azure provides which we needed. The 'familiar' means that we don't need to learn much more knowledge to build our application on it. What we had known on web application and windows service (or say NT Service) application development could be used on building Azure application. What we need is to learn how to deploy and configuration.
In Azure there are 3 services provided for now: Windows Azure, SQL Azure and AppFabric. I would like to quote the simple definition from the official website.
Windows Azure: operating system as a service
SQL Azure: fully relational database in the cloud
AppFabric: makes it simpler to connect cloud and on-premises applications
Here I would talk a bit on the first 2 of them since AppFabric I haven't have time to work with.
When I firstly heard about Windows Azure I doubted what's the different between it and the original web hosting provider. As we know we can rent either virtual dedicated server or web hosting, upload our website files and did some configuration through the IIS or the additional web configuration platform provided by the provider, such as the godaddy. Is there any difference between them and Windows Azure? Here I would like to explain it in 'the technology dialect' and 'the business dialect'.
What Windows Azure provides to you is not just a server or a virtual machine, it provides a platform which based on thousands of servers running under Windows Azure OS (based on Windows Server 2008 R2 I guess) with virtualization technologies. By deploying you website on Windows Azure you would not be able to know which server your application is hosted. That means you don't need to touch the IIS and you don't need to consider where your pages should be located.
Windows Azure provides the hosting platform with the latest web technologies from Microsoft such as ASP.NET 3.5 SP1, 4.0 Beta and ASP.NET MVC, etc. It also provides some other platforms such as PHP. So you don't need to check whether your application could be run in Azure or not.
Besides the web hosting Windows Azure also provides the storage services for simple usage which are Table Storage, Blob Storage and Queue Storage. You can use them for some lightweight data storage.
The table storage provides the structured data saving service. You can define the relevant class for the data you used and save/retrieve them with the table storage API. If you want to save some binary data such as images, xml, etc you could use the blob storage. And if you need to do something like windows service or NT service, you could use queue storage as a bridge to communicate with your website and your own service running in background. All of these 3 storages could be consumed through the ADO.NET Data Service protocol by your web application and your own background service.
In Windows Azure an application will be called 'Role' that you could treat 1 Role = 1 Application. A web application is a Web Role in Azure world. You can create ASP.NET Web Role, ASP.NET MVC Web Role and WCF Service Web Role etc. You can also create Worker Role, which is 'the background service' I mentioned before, something like the NT service. The worker role will be executed in background on the Azure as a background processing to do such as image archiving, sending emails, etc. Since in Windows Azure you can't see the hard disk of where your application is located, all data should be stored in the 3 storage services and process some background job by the worker role.
Comparing with the Windows Azure, the SQL Azure will be more simple and easy to understand. SQL Azure likes the database of the traditional web hosting providers. It's some SQL Server 2008 instances installed on the Azure OS. Once you applied the SQL Azure you will be given a database address, username, a password and a connect string (ADO.NET and ODBC). And you can control it through the SQL Server Management Studio or any tools you prefer. (For now there are some problems when connect the SQL Azure through SSMS unfortunately.) But I'm not pretty sure if SQL Azure provides the other services such as Reporting Service, SQL Agent, etc.
Below is my simple, personal explanation of Azure in technical area. We can see that there are not many differences with the original web application developments which we are familiar with. We can use the 3-tier or N-tier architecture in our application, the server controls and MVC helpers will be working well under Azure as well. The difference is just some configuration to deploy it on Azure and that's all. So that's what Microsoft said 'familiar environment'.
In the business side deploying on Azure we don't need to consider the hardware configuration of the server(s). The Azure just needs to know how many CPU cores we want and how much band we need. And with the growing of our business we just need to increase them without changing the server and the data migration. The infrastructure of Azure will take care of them.
In the future there will be some more services on Azure such as SharePoint, Dynamic CRM (XRM), etc. Then we could build our application based on them without installing on our local. But the problem is do we have to code and debug our application on Azure when developing? Is there any way that we can code and debug locally? In the coming few posts I would like to explain more on how to build our application by Visual Studio, test it by using local simulation.
Hope this helps.