Migrating Applications to Windows Azure
Over the past three years I have been using my personal music website as a sandbox for experimenting with the latest Microsoft Application Platform features for building service oriented web applications. The last version of the site featured WCF SOAP services and a Silverlight 2 UI. The site was hosted at DiscountASP and leveraged SQL Server 2005 for the data store. I posted the details of this development effort back in August of 2008. Below is a screenshot of the application as it existed up until about a week ago:
It has been a year and a half since I have done any work on the site. With the recent release of Silverlight 3, Expression Blend 3, Windows Azure, SQL Azure and the beta of Visual Studio 2010 I felt it was time. One of my primary goals with this migration effort was to reuse as much of my existing code as possible. Hopefully you will find my experience useful as you embark on your own migration efforts.
As you can see from these screen shots, I have made some significant modifications to the user interface. Even though it looks different, I was able to reuse much of the code from the previous UI implementation. I was also able to reuse my database design and data access code. The new development dealt with creating a RESTful WCF interface that supports both XML and Json return formatting and the new UI look and feel, both minimal amounts of code.
The details of the Windows Azure migration project can be found in the following seven posts
- The Architecture of a Service Oriented Rich Internet Application
- Setting up your Azure Account and Development Environment
- Migrating your SQL Server database to SQL Azure
- Configuring your Visual Studio 2010 Windows Azure Project
- Migrating WCF SOAP services to WCF RESTful services
- Using Silverlight 3 to create a rich user interface that can run in or out of the browser
- Using Azure blob storage for music and image files
Why Windows Azure?
The Windows Azure Platform is made up of 3 components:
- Windows Azure provides a dynamically scalable environment for .NET solutions and provides compute, storage, hosting, and management capabilities. You can also It integrate you on-premise applications with secure connectivity, messaging, and identity management.
- SQL Azure is a Relational Database for the Cloud based on SQL Server. It provides the core capabilities you are already familiar with from working with relational databases. You can connect to your cloud database instances the same way you connect to on-premise databases, using ADO.NET.
- AppFabric makes it simpler to connect on-premises applications with the Cloud. AppFabric offers identity management and firewall friendly messaging to protect your assets by enabling secure connectivity and messaging between on-premises IT applications and cloud-based services.
Windows Azure provides a quick on-ramp to authoring and running applications by hosting them in Microsoft data centers and affordably fits user needs by offering a scalable infrastructure in a pay-as-you-go business model. The deployment model is streamlined so that you can move your applications directly from your development environment to your Azure staging environment for testing directly from Visual Studio. Moving your solution into production is a single click away. This ability will allow you to quickly get your solutions in production and scaled appropriately for your needs while you only paying for the compute and storage that you use.
You can get pricing information here. There is a also a tool which will provide you with a customized estimate of potential cost savings you (or your company or organization) may achieve by building on the Windows Azure Platform called the Azure TCO Calculator. You can get the details about the tool and use it here.
In summary, the benefits of the Windows Azure Platform are:
- Rapid development and deployment of your .NET solutions into Microsoft managed datacenters
- Your solutions scaled to your requirements with the ability to scale up or down dynamically
- You only pay for what you use