Microsoft Azure Vs Google App Engine
As you all know by now, Windows Azure is Microsoft’s brand new platform as a service offering and I thought it would be an interesting exercise to compare it side by side with the Google’s popular PAAS product – Google App Engine.
Language Support:
Straight out of the gate Azure allows you to leverage the power of C# and VB, and there is no reason why the other .Net savvy languages can’t join the party too. Look forward to IronPython, F# and Iron Ruby being a consideration in the not too distant future. Meanwhile GAE only gives Python as an option and further language support is not on the roadmap. .Net services is being designed from the ground up as language agnostic with Java & Ruby SDKs being readily available http://jdotnetservices.com/ http://www.dotnetservicesruby.com/
Result: SUPER BODY SLAM BY AZURE!!
Application Types
Azure offers two different kinds of application model; Web Roles and Worker Roles. Both can be utilised in your Azure applications. Web roles are your typical request/response HTTP paradigm similar to GAE’s request based model. More interesting is the Worker role that adds processing and logic that does not need to be triggered via a web request. Think Windows Service and you are on the right track. This gives you the ability to run background tasks and opens up a whole raft of application possibilities that GAE just cant offer right now. Looking at the roadmap, it’s not going to arrive any time soon either. There’s no chance of chron-like capability or long running processes with GAE.
Result: CHOKE HOLD BY AZURE!
Scalability
Microsoft Azure is as yet unproven in this area but there are plenty of indicators around the web that GAE would not hold up against traffic of a serious or sustained nature. Concerns with CPU and storage limitations, caching, database immutability plus one way in and out ( via the Google API ). App Engine’s 1MB file limit would seriously hinder the kind of audio-heavy enterprise applications we write at Qire. Of course we will have to wait and see how Azure stacks up in this regard, so it’s pretty impossible to compare both technologies at this time.
Result: Break!
Storage
Azure offers a few different storage options including Table Storage that leverages the killer ADO.NET Data Services Framework to get the job done. Add to this the more familiar SQL Data Services platform and you have more than enough flexibility to achieve all you need. GAE follows the ‘one big table’ approach and there is nothing wrong with that but the range of storage options provided by Azure gives it more of an edge.
Result: Knockout!
It’s plain to me that the Microsoft offering is way more advanced than anything else out there, an opinion that is echoed on many GAE forums and messageboards too.
So to begin, create a new ASP.NET website, Add New item, and then choose ADO.NET Entity Data Model. Name it EntityModel.edmx and click Add to create a new model.
Set up your data connection, I won’t go into this as it’s simple enough to figure out if you’ve never done it before. Click the checkbox to save entity connection settings into your web.config and name it MyEntities.
The wizard will then tootle off and retrieve the names of all the tables, views and stored procedures in your database. Choose a table ( I’ve chosen a table from my DB called ‘Log’ ) and name the Model Namespace MyModel.
Microsoft have put together a nice little manual that sets out best practice for developer driven security. It’s choc full of techniques you can integrate into your development pursuits to build better, more secure applications.