Thursday, November 13, 2008

Windows Azure an introduction and what will it mean to the corporate developer? (Part 4)

This will be the final installment in my post about the Azure Services Platform, this time I'm going to talk about some of the building blocks available (in my oppinion the more interesting ones) namely .NET Services (formerly known as BizTalk Services) and SQL Services (formerly known as SQL Server Data Services).

I will not talk about Live Services mainly because I haven't had the time to look in more details about it but I might get around to that later on since there are some interesting aspects to some of the offerings in there even for a more corporate centric application.

.NET Services - ServiceBus

This very cool piece of technology gives us a servicebus in the cloud which may change the way many companies will solve their integration scenarios in the future.

The servicebus is not about hosting your services in the cloud, but rather making on-premise services publicly available in a really easy way. Everything is based upon WCF so your previous investments into this technology really pays of, the only thing we have to do is to change a binding, so exposing a already existing service using the servicebus in really a oneliner.

In the current CTP release the focus lies on non durable communication, fourtunately Microsoft talks about implementing both durable multicast and something called anycast (which would be the first available subscriber will get the message). Personally I think the lack of durable multicast limits the servicebus somewhat in B2B integration since there are not so many scenarios when a partner or customer will be satisfied to only get their messages incase their apps are up and running. So we really need the durable multicast for this before usage will really pick up in this area.

Apart from providing a volatile multicast mechanism we also can easily expose an on-premise service through the bus even though we are behind a firewall (it even works with NAT). Another really cool thing is the magic that they are working to establish a direct connection (you can configure this behaviour) even though the caller and callee both are behind a NAT.

.NET Services - Workflow Services

This is another service that have great potential. Apart from providing us with an scalable hosting environment we should be about to constuct really elegant solutions using a workflow to orchestrate a set of services and providing new functionallity based on that. Or we simply want to massage the data somewhat before sending one or more versions of a message onto the servicebus.

Unfortunately in the CTP they only allow fully declarative workflows, that means no custom activities which will limit the use somewhat. The subset of activities is rather small and contains the basic controll flow stuff and a bunch of HTTP and XML helper activities that are new in the Azure Platform.

We will be able to host WF 3.5 and beyond and the deployment process is really a breaze, you simply rightclick on your workflow in Visual Studio to deploy to the cloud. Once you have your bits deployed you can manipulate the workflow types and instances through a management portal, unfortunatelly this portal is not suitable for large volumes of running instances and we are left (atleat as it looks now) to implement a better management client ourselves (luckily the management apis are avaiable to us).

.NET Services - Access Control

Provides us with a Security Token Service (STS) in the cloud that can provide fedrated security by providing integration with a wide variety of different source such as Active Directory, Live ID, Cardspace and in the future Open ID as well.

It works with the Servicebus, Workflow Services and SQL Services, providing us with a consistent access control model through out the breath of the building block services provided in the Azure Platform.

There is alot happening in this area with the "Geneva" framework and server offerings which I haven't had the time to drill down into (honestly security is a nessecary evil :) ... nah but it is not as fun as the workflow and servicebus stuff so getting around to details ain't on the top the list yet).

SQL Services

Aims to provides us with a database in the cloud, currently it is very similar to the storage offerings in Windows Azure with the main difference being that SQL Services are build upon SQL Server (as the name impiles). The way to get access to the data is through a REST API (or if you like ADO.NET Data Services).

The storage model available now is really a hierarchical model that looks like this ... At the top we have a authority which can contain one or many containers which in turn consists of on or many entities that are a collection of typed name value pairs. Right now we are limited to the following scalar types: string, binary, boolean, decimal and dateTime.

In the future we will get support for more SQL Server functionallity such as reporting, analysis and much more.

No comments:

Post a Comment