.NET in the Cloud, Windows Azure
Besides Windows Azure, developers immersed in .NET can use PaaS solutions from Rackspace and Skytap. Rackspace Cloud Sites provide a platform for .NET, Active Server Pages and Microsoft SQL Server development but Rackspace's TrueHybrid load balancing also supports Linux. Therefore Rackspace Cloud Sites developers can use MySQL, Perl, PHP, Python development and the Drupal content management. Skytap is a vehicle for development and testing applications, including using its cloud-based Lab Manager for testing Windows 7 applications. Included in the Skytap offering is a library of virtual machine images and pay-per-minute pricing for on-demand users.
Windows Azure provides a pay-per-use bundle that includes Windows Live, Microsoft SharePoint Services, Microsoft Dynamics CRM Service, .NET Services and SQL Azure. Viewed through a developer prism, the Windows Azure platform includes the Compute service, Storage service and the Fabric on which they depend. The platform is intrinsically tied to Windows so that to use the Compute service, for example, a developer writes a Windows application that deploys in a Web role and/or a Worker role. Services written for Windows Azure implement Web roles, Worker roles, or both. Web roles are applications accessible via HTTP or HTTPS end points.
Windows Live Services include application services, geospatial services, user services, mesh services and a variety of other services for search, communications, devices, directories, identity, synchronization and users. Windows Azure provides scalable storage for binary large objects (Blobs) and tables, complemented by a queuing service and .NET services. The core components of Windows Azure .NET services include an Access Control Service, a Service Bus and a Workflow Service. Windows Azure .NET services comply with de facto standards for protocols and web services, including Simple Object Access Protocol (SOAP), HTTP and representational state transfer (REST). The Access Control Service provides federated identity support with support for Active Directory, Tivoli Directory Server, Windows Live ID, X.509 certificates and security cards.
A storage account provides a namespace that can contain multiple Blob containers, each being separately accessible via a URI and a RESTful interface. Azure provides PUT, GET, DELETE, copy Blob and get Blob list commands. For Blob access, Azure supports commit logic and optimistic concurrency. Blobs can be processed in blocks and Azure supports block uploads in parallel and out of order sequence. Out of order blocks are not committed until receipt of a PUT blocklist command. Azure supports client caching and optimistic concurrency with conditional PUT and GET.
Microsoft is positioning Azure to encourage organizations to use it for a business hub in the cloud. To complement databases in the cloud architecture (SQL Azure), the Microsoft Synchronization Framework enables sharing of data from multiple data sources, including enterprise databases and mobile devices. The framework provides bi-directional synchronization and the capability to publish data from disparate databases. The data hubs use multiple trust levels to implement different classes of data access.
Developers experienced with .NET can program for .NET services using a familiar development environment, Visual Studio, plus the .NET Services SDK. The Windows Azure developer can use C#, C++, Windows APIs and .NET. Available also are a Ruby SDK and Java SDK for .NET services, with the latter using the Metro web services sack.
Multi-Tenant Application Platforms
One PaaS feature that's a departure from traditional enterprise computing is the multi-tenant architecture. In a multi-tenant cloud environment, users share applications and databases, requiring fewer database servers than having disparate applications and databases.
The LongJump Business Application Platform provides a MVC (model-view-controller) architecture for building single-tenant, multi-tenant, on-premise and cloud-hosted applications. Developers can use Java, Asynchronous Java and XML (AJAX), Simple Object Access Protocol (SOAP), Web Services Description Language (WSDL), components, mashups and other familiar technology. Developers can design, build and customize applications using an ER-based data modeler, Eclipse Plug-In, REST application programming interface (API), AJAX controller API, REST API and localization and translation libraries. The LongJump PaaS also bundles web forms, Java function library, workflow designer, policy engine, notification engine, email Integration, calendar management, and a catalog of pre-built applications. It runs in a Linux environment with MySQL databases.
Cordys offers a multi-tenant application and cloud orchestration solution known as Cordys Process Factory. The Cordys PaaS platform supports creation of business applications as new situational or MashApps that combine data from Google Apps, web services, on-demand applications, on-premise applications and other sources. Process Factory supports data mashups, user interface mashups, and process mashups. The MashApp Composer can be used to assemble mashable components from a process library, widget repository and web services.