I’m in LA for the Microsoft Professional Developer Conference and I will write a daily resume on this blog about what I have found interesting on the visited sessions.
The big news today is the announcement of our cloud strategy and in particular our first cloud offering. The key today offerings are Windows Azure (formerly known as “Red Dog”), our first incarnation of a cloud OS and Windows Azure Services which includes thing like SQL Services (formerly known as SSDS), Identity, etc..
Let start to understand what Windows Azure is in today form. I have already mentioned that is a Cloud Operating System but what does it means? First it is not a replacement of VistaJ. But is offering some basic but vital services if you want to host an application or a services on the cloud. So it is more a replacement of your data center and Windows Server.
In two words Windows Azure offers you the possibility to host a ASP.NET application or a WCF service as a WebRole and to host some .NET code as WorkerRole.
You can think that a WebRole is a highly scalable, load balanced and fault tolerant “IIS instance” hosting your ASP.NET web solution or WCF service. ASP.NET works similarly to the current medium trust sandbox typical for hosted environments. Of course it can also server Silverlight applications so it is a good solution for hosting a complete modern Web App composed by ASP.NET, WCF services and Silverlight front end parts.
The WorkerRole is basically a job scheduler where you can host your logic to do some asynchronous background processing. Typically it will be triggered by a message in a queue. You will use this role for high computational work like creating thumbnail of large image datasets or data analysis jobs, etc…
The cool thing about this platform is that with a simple xml config change you can instantiate 10 servers in a load balanced farm and then go back to 1 when the load is reduced. You might have big and long end of the month job to execute so you can simply fire up 20 WorkerRole instances and the reduce them to 1 when the job is done. The beauty in this case is that you will pay only for the resources that you have used and not 30 servers and all the software licenses needed. Finally making utility computing a reality.
Of course a cloud OS cannot simply offer ASP.NET and manage code instances and management but it should offer also some sort of storage. In today form Windows Azure is offering 3 main storage facilities:
- Blob (basically a cloud file system) where you can create, delete and retrieve “files” offering near unlimited storage space and bandwith. The blob service is offered in form of a REST API but we are also publishing a sample .NET wrapper that makes the integration between the hosted ASP.NET and the Blob service very easy. There is also a cool PowerShell sample that shows how to mount a “blob services” as an hard drive and it will behave like a local HD, so you can issue cmd commands like dir against it.
- Table, where you can store structured data. It is similar to SQL Services but in a more limited way. It let you store, in form of a property bag, structured data. It is fairly trivial to store a .NET object in to it, thanks to the ADO.NET Data Services driven API.
- Queue, is the facility where you can put and retrieve messages. This is a key service to decouple your ASP.NET front from the back ground processing code hosted as WorkerRole.
With all this you can create a fairly complex web application and get a fault tolerant, highly scalable, cost effective infrastructure charged only by used resource, with no need of an IT department and your own datacenter. In future you will even get geo-location data replication.
One question that comes to the mind of people is how do you develop and debug (even on the trainJ) a cloud solution. We are offering a complete Windows Azure environment that mimics the real Azure Cloud that you can install and configure on your desktop. It can even simulate load balancing across multiple instances.
The last cool thing I want to point out is that with one click of a button you can move your entire solution from staging to production and roll it back in case of problem.
Another related announcement is that SQL Services (our Cloud DB offering) will also support Reporting Services and other BI stuff. More to come in a next blog entry.
So when you can start using this stuff? At the moment we are very early stage (read there will be some breaking changes in the next months) and opening up the CTP to the public. We are definitely not ready for prime time yet but I would recommend to get familiar to some of these concept because this technology is here to stay and could eventually change the way that we build, deploy and run certain type of application in the future.
Another topic that I have touch during this first day is the ASP.NET road map and here is a quick list of what is coming:
Next version of ASP.NET will ship in the .NET 4.0 as a side by side release to the 3.5 sp1. Next version of VS, called Visual Studio 10 will be able to target 2.0, 3.5 and 4.0 in the same IDE and this is already a good news. Plus the goal is to make the porting of 3.5 to a 4.0 as painless as possible trying to be as compatible as we can with the 3.5 version.
ASP.NET 4.0 will offer a more granular control on view state where you can enable view state for a control in page that has viewstate disabled and vice versa.
JQuery will be added to ASP.NET and is probably one of the first integration of an Open Source project in to a MS product.
The MVC v2 is also maturing bringing AJAX support and also Dynamic Data integration making a more productive environment for LOB data driven apps compared to the tedious work that you have to do in v1.
Dynamic Data also get a boost and in particular I like the Search Expression where you can define a query that will span multiple columns or a range query, something that is quite hard to do with the today data source control.
Last but not least is the integration of URL rewriting to enable friendly URL enabling for example friendly URL like “http://mydomain.com/app1/Accessories/Mouses/MSMouse” for data grids items.
WPF & Silverlight
Last topic I would like to mention is the code and skill sharing between WPF and Silverlight. As you might know SL and WPF share a lot in common like the XAML language but are not binary compatible at the moment. XAML is fairly compatible but for example some controls API are a bit less. Plus of course SL is a sub set of the WPF platform so a porting from WPF to SL is much more complex that vice versa. There was a demonstration how to build an application for both platforms and the changes that are required. Bottom-line you can reuse around 90% of your code if you port from SL to WPF. In my opinion it makes more sense to chose the right platform four your solution rather than targeting both. More to come in an upcoming blog about the differences of these two powerful UI platforms.
Greetings from LA