Synchronization to Hosted Services and an Explanation of the Bill Gates Keynote

As Tim commented in my last post (and a number of others at the conference), the Bill Gates Sync keynote was really impressive, however it was somewhat hard to understand exactly what was going on and the components that were involved. I thought I would discuss some of the details behind this demonstration in this post.

The first thing that I should mention is that all of the synchronization was accomplished through the use of the Microsoft Sync Framework. The three key endpoints that we were synchronizing were SQL Server 2008, SQL Server Data Services and a Windows Mobile file system. As many of you know, the Sync Framework enables virtually any topology whether that is Peer-to-Peer, Multi-Master or Hub-and-Spoke. In this case, the topology used was Hub-and-Spoke and as you can see in the diagram, all of the information from SQL Server and Windows Mobile was being consolidated into SQL Server Data Services. For those of you that do not know what SQL Server Data Services is, it is a highly scalable, on-demand data storage and query processing web services which is built from SQL Server code.

I really like how SQL Server Data Services was used as the central data store to consolidate all information from all end points. For many organizations (in particular Small and Mid-Size Businesses [SMB's]), setting up high availability connectivity, firewalls, authentication, security, etc can be quite a challenge. By using SQL Server Data Services all of this is done for you. For those organizations that are willing to host their information, implementing mobile applications using SQL Server Data Services becomes a lot easier.

The demo started from a web site where people could submit news articles directly to SQL Server Data Services. From that point the Sync Framework would send content to offline SQL Server 2008 data stores. One of the cool things David showed in the keynote was the ability to then use some of the new data types such as Spatial and Geography to analyze content and display it in the local application.

In the final part of the demo, Moe took a picture on his Windows Mobile Tilt phone. He then used the Sync Framework to take the picture and upload it from the device to the central SQL Server Data Services database through a cellular data network. As a side note, for those of you who have ever tried doing demonstrations using data networks in front of large numbers of people, you will likely agree that it is quite nerve racking to put your faith in the stability of the data networks. But then again the instability of data networks is a key reason we look into offline, isn't it?

From that point the image was downloaded to the offline SQL Server 2008 database. One of the really cool parts about this was the fact that we integrated file systems (in this case Windows Mobile) with databases to enable us to move binary data to and from disparate data stores and file systems. In fact, this is quite similar to what our new Sync Framework partner Ontella does to enable pictures to synchronized from mobile camera phones to their PC, email, and favorite imaging sites.

Another part of the demo that people really seemed to appreciate was the background synchronization built into the local application. Based on network connectivity the application would periodically initiate a Sync Framework request to check for new data from SQL Server Data Services and download as appropriate. A number of people have asked how we did this, but ultimately I wish we could take credit for this but much of this has already been implemented into Windows and Windows Mobile through things like the State and Notification API's and the Line of Business Accelerator. I do agree that we can make this a lot more obvious and we certainly will look into providing these components to make things much easier for developer to just drop into their applications.

Liam Cavanagh