This is the first article in our "Bring the clouds together: Azure + Bing Maps" series. You can find a preview of live demonstration on http://sqlazurebingmap.cloudapp.net/. For a list of articles in the series, please refer to http://blogs.msdn.com/b/windows-azure-support/archive/2010/08/11/bring-the-clouds-together-azure-bing-maps.aspx.
Using the application
The Plan My Travel application allows you to create a list of stops in your trip, and display them on a map. Currently it provides both an HTML client and a Silverlight client. They provide similar user experience, but the Sivlerlight client is a bit smoother. In the future, we may also create a Windows Phone client. You can click on the map to add new stops. The stops will also be displayed in a grid. If you select an item in the grid, and mouse over to another item in the map, a distance between the two places will be displayed. You can also save the list, but since we have not implemented user authentication, currently all user shares a same list.
Figure 1 The Plan My Travel client application
Currently the application provides two clients: An HTML client and a Silverlight client. The Silverlight client is much easier to implement from a developer and a designer's perspective, and can provide a better user experience. but it requires end user to install the Silverlight plug-in. The HTML client extensively uses jQuery to simplify the development. But it's still much more code compared to the Silverlight client.
Under the hook, the client applications invoke a WCF Data Services, which is hosted in Windows Azure. Windows Azure allows you to scale an application dynamically based on user demand, and is ideal for such a consumer oriented solution which may potentially be used by thousands or even millions of users concurrently. WCF Data Services allow you to expose data to the world using a standard protocol: The OData. And thus allows you and third party developers to create client applications using any technology they choose, as long as it supports standard HTTP communication. For example, we plan to add a Windows Phone client in the future.
The service in turn uses Entity Framework to query/update a SQL Azure database. In our current implementation, most of the CRUD operations are delegated to stored procedures due to Entity Framework doesn't support spatial data types out of box. But if you want to extend the application with additional tables that do not use spatial types, using Entity Framework will definetly increase your productivity.
The location data is stored as spatial types in SQL Azure. SQL Azure provides a central place to store your data in the cloud, and it supports a lot of existing data access frameworks, such as Entity Framework. Spatial data allows you to efficiently store geometry and geography data using international standards. Today many widely used database systems support spatial types, including SQL Server and SQL Azure.
This article provids an introduction to the Plan My Travel application. It introduces the features of the application, as well as the key platforms/technologies used to implement those features. The next article covers the architecture, the high level design, and the decitions behind the platforms/technologies.