Mobile computing is taking over. The superhero model for
a typical IT worker is surely Batman, with a dozen gizmos
hanging off his belt: smartphones, USB keys, MP3 players,
cameras. However, Windows software developers who want their
applications to synchronize data among those devices and with
desktop clients, servers and web services... those developers
often would prefer root canal surgery. Every Windows app that
requires synchronization has had to be custom-crafted code;
everything is built from scratch.

Microsoft's Sync Framework attempts to address that
particular toothache. The Sync Framework, now in Community
Technology Preview (CTP), extends Visual Studio 2008 to
sync-enable applications and services. It will work with both
online data (such as rich Internet applications and Web
services) and peer-to-peer collaboration (such as file updating
across USB keys or smartphone data and setting
synchronization). "We now have a common reusable extensible
framework to keep information synchronized, from back end
servers to devices to peer-to-peer," explained Anthony
Carrabino, Microsoft Senior Product Manager for SQL Server
Marketing. Carrabino discussed the Sync Framework during the
DevConnections conference held in Las Vegas this week.

With the Sync Framework, a developer enables a server or
application to be sync-enabled using "sharing extensions" on
Microsoft SQL Server 2008, Visual Studio 2008, Windows NTFS
file systems and removable drives. Developers don't have to
know the nitty-gritty of Internet protocols, as the framework
takes care of the gory details, and the framework is also said
to have a platform-agnostic architecture. A node that's set to
be a willing participant in the sync architecture—such as
that USB key or a smartphone—can be set to automatically
update whenever a connection is possible. How it's controlled
and the data that's exchanged is up to the developer, but the
connection and data-swap process is smoothed.

After a developer creates the sync-enabled client, server or
web service, endpoints (which may themselves be services,
applications or devices) are —bam!—suddenly enabled
to do synchronization. The Sync Framework has prebuilt
components to make it easier for the programmer to work with
particular types of devices or services. After an endpoint is
defined as a participant and a network connection is found,
they can all "talk" and synchronize the data, said
Carrabino.

Ho-hum, yet another framework that keeps developers from
having to drill down into protocols. But here's the cool thing
for IT teams: once a server or application is set to
participate in the synchronization network, other applications
can use that predefined synchronization without additional
custom development.

For example, if you write an in-house custom application to
synchronize server information with mobile devices in an
inventory application, and the Accounts Payable department
later decides it wants to employ a Web services application to
synchronize payment schedules with the company's partners,
nobody has to start all over again with yet another custom
synchronization platform. Developers fro the different parties
all can participate in the same database-driven connection used
in the inventory application. That could save gobs of time.

Security-wise, "Whatever you do at the data level is
respected and leveraged by the sync framework," said Carrabino.
That includes whatever security you're using to protect the
information in-place (database, encryption, third party
security keys); it also relies on the transport, such as
https or SSL. Services can have another level
authentication, Carrabino adds; there's a little more control
at that point.