SSE is an XML micro-format and corresponding sync algorithm that can be embedded in RSS or Atom feeds to allow for two-way synchronization among peers. More important: the algorithm allows for mesh-style synchronization between nodes, with no concept of a "master" copy. This can be game-changing for data-exchange and app-level data interop. But only the future will tell.
This projects provides an open-source implementation of the required behavior from the spec.
SSE was initially announced by Ray Ozzie (Microsoft's CTO). You can learn more about SSE by watching the MSDN TV video
and reading the latest SSE spec
and links above.
The library has 80%+ code coverage through unit tests.
What can you do with the library right now?
- Create an adapter (repository) that talks to your underlying application data/business objects (your CRM system, data-entry app, whatever)
- Export RSS feeds with synchronization information embeeded for merging with other feeds
- Import RSS feeds from other peers
- Synchronize a local feed via HTTP with a server feed
- Do all this without changing any code in your app: this makes for a hassle-free way to add import/export/sync functionality to your application
The SSE spec takes care of defining a standard algorithm for detecting conflicts and updates in a merge operation, as well as the behavior for deleted and created items. This makes for a predictable behavior regardless of the actual implementation technology.
The library was created with the following goals in mind:
- Have a minimal library that can be easily extended with adapters to accomodate simple synchronization scenarios
- Provide a full .NET as well as .NET Compact Framework implementation
- Interop with other SSE implementations as they come along
The following are non-goals:
- Provide a full-blown and highly optimized synchronization engine (i.e., you can hardly use it for full database merge/replication, complex data/binary payload sync, etc.)
- Provide a server-side story
- Provide a service to periodically perform sync with a server and manage jobs (this means you have to manually sync from your app using the exposed SyncEngine API)
Included in the download is a sample application that is a very simple Customer CRUD application that provides a custom adapter to import/export feeds using its internal data-access component, and which syncs with a simple ASMX webservice via HTTP. This sample application uses a SQL Compact Edition
database, so you'll need to install it, as well as the SQL Compact Edition Tools for VS 2005
. If you don't want to, just exclude the Samples solution folder from the solution.
*Download it now!
Thanks John Crowley
for dreaming up such a cool logo for SSE!
This project is sponsored by Clarius Labs
This project is owned by the MVPXML Project