Sync Framework Toolkit now Open Source!


I got a note today from Rob Tiffany, another one of our brilliant Microsoft Architects. (I saw another one, because I like to think I am as brilliant… [Note: I do work for Microsoft too.])

Here’s Rob’s note:

Sync Framework is an amazingly effective, provider-based framework for syncing just about anything, and in fact, is the basis for SQL Azure Data Sync.
This release to Open Source will really benefit the community at large, and gives an opportunity for deep .NET developers to be involved with some great bits.

 

The profound effects of the Consumerization of IT (CoIT) is blurring the lines between consumers and the enterprise. The fact that virtually every type of mobile device is now a candidate to make employees productive means that cross-platform, enabling technologies are a must. Luckily, Microsoft has brought the power to synchronize data with either SQL Server on-premise or SQL Azure in the cloud to the world of mobility. If you’ve ever synched the music on your iPhone with iTunes, the calendar on your Android device with Gmail, or the Outlook email on your Windows Phone with Exchange, then you understand the importance of sync. In my experience architecting and building enterprise mobile apps for the world’s largest organizations over the last decade, data sync has always been a critical ingredient.

 clip_image003SQL-Azure_rgb

The new Sync Framework Toolkit found on MSDN builds on the existing Sync Framework 2.1′s ability to create disconnected applications, making it easier to expose data for synchronization to apps running on any client platform. Where Sync Framework 2.1 required clients to be based on Windows, this free toolkit allows other Microsoft platforms to be used for offline clients such as Silverlight, Windows Phone 7, Windows Mobile, Windows Embedded Handheld, and new Windows Slates. Additionally, non-Microsoft platforms such as iPhones, iPads, Android phones and tablets, Blackberries and browsers supporting HTML5 are all first-class sync citizens. The secret is that we no longer require the installation of the Sync Framework runtime on client devices. When coupled with use of an open protocol like OData for data transport, no platform or programming language is prevented from synchronizing data with our on-premise and cloud databases. When the data arrives on your device, you can serialize it as JSON, or insert it into SQL Server Compact or SQLite depending on your platform preferences.

 

The Sync Framework Toolkit provides all the features enabled by the Sync Framework 4.0 October 2010 CTP. We are releasing the toolkit as source code samples on MSDN with the source code utilizing Sync Framework 2.1. Source code provides the flexibility to customize or extend the capabilities we have provided to suit your specific requirements. The client-side source code in the package is released under the Apache 2.0 license and the server-side source code under the MS-LPL license. The Sync Framework 2.1 is fully supported by Microsoft and the mobile-enabling source code is yours to use, build upon, and support for the apps you create.

clip_image007clip_image009clip_image010clip_image012clip_image014clip_image016clip_image018clip_image020clip_image022

Now some of you might be wondering why you would use a sync technology to move data rather than SOAP or REST web services. The reason has to do with performance and bandwidth efficiency. Using SOA, one would retrieve all the data needed to the device in order to see what has changed in SQL Server. The same goes for uploading data. Using the Sync Framework Toolkit, only the changes, or deltas, are transmitted over the air. The boosts performance and reduces bandwidth usage which saves time and money in a world of congested mobile data networks with capped mobile data plans. You also get a feature called batching, which breaks up the data sent over wireless networks into manageable pieces. This not only prevents you from blowing out your limited bandwidth, but it also keeps you from using too much RAM memory both on the server and your memory-constrained mobile device. When combined with conflict resolution and advanced filtering, I’m sold!

I think you’ll find the Sync Framework Toolkit to be an immensely valuable component of your MEAP solutions for the enterprise as well as the ones you build for consumers.

Enjoy!

Eric


Comments (5)

  1. Andy says:

    Not sure why the framework isn't available on Codeplex, as with MEF, MVC and WCF Web API. It slightly confuses me whether it is to remain a core part of their OData/Sync story eg. added to .NET 4.5 (hopefully) or via out of band Nuget releases.

  2. Abhishek says:

    I can't see the images in your blog post.

    [ericgol]  Not sure why you can't see the images, but it may be proxy server settings on your end.  Images for MSDN blogs are kept offline, and for my blog they are served by a third-party hosting company, operating in North America. 

  3. Duncan Smart says:

    What on earth is a "MEAP solution"?

  4. Daniel Lidstrom says:

    MEAP may refer to:

       Canon MEAP (Multifunctional Embedded Application Platform), a software development kit

       Michigan Educational Assessment Program, a standardised school test

       Mobile enterprise application platform, a development framework for mobile devices

       MEAP Nisou, a Cypriot football club

       Manning Early Access Program, a program for early access to technical manuscripts to be published by Manning Publications Co.

    My guess it is Mobile enterprise application platform, but who knows?

     

    [ericgol] I guess I know. 🙂   And the winner is….. (not Miss Philippines.) ….Mobile Enterprise Application Platform.  (Oh, and Congratulations to Miss Angola, the new Miss Universe.)

  5. Tom Robinson says:

    Your blog title is a bit misleading. The core of the Sync Framework is still closed source, this is just a layer on top of the Sync Framework 2.1.

    [ericgol] OK, don't shoot the messenger here.. I can only go by the note I was sent on this, but you are correct, the Toolkit is Open Source, not the base Framework. I will correct the title. Thanks!