views:

261

answers:

1

We are trying to convert out old school client server application into a N-Tier application with synchronization and offline support using all Microsoft technology (we are a total .Net and SQLServer shop). We want to focus on writing business logic instead of spending time on pluming, so we are going to use as much existing Microsoft pluming technology as possible.

So far we decided to use SQL Server Compact edition with WinForm/WPF thick client, SQL Server 2008 on the server, Microsoft Sync Framework to do synchronization between client SQL DB and server SQL DB. So far so good.

Trouble comes as when we try to implement the "N Tier" part. Our current application is pretty SOA. Every data access call is done thru web service. So naturally we were thinking of using ADO.Net Data Service. Then it came a pleasant surprise to us that there's something called ADO.Net Data Service Offline (Astoria Offline), which allow us to make data access call through web service, support Synchronization, and even support offline. Suddenly we started to believe that heaven really is a place on earth.

And then yesterday our teammate who's in charge of researching on "Astoria Offline" telling us that "Astoria Offline is dead" based on the blog post ( http://blogs.msdn.com/astoriateam/archive/2009/03/07/announcing-project-codename-astoria-offline-alpha-preview.aspx ) . We suspected that he's on crack but didn't want to challenge him. The fact is that Astoria Offline is still in pre-alpha mode, and we need a production solution.

So other than Astroia Offline, is there any other similar solution that allow us to use Microsoft Sync Framework in N-tier setting that also support Offline mode?

+1  A: 

If you are considering ADO.NEt Data Services, then you may well find that ADO.NET Synchronization Services are a good fit for you. Depending on the senario you are trying to create. Alternately Remote Data Access may fit better.

You may want to choose Sync Services: 1.Supports conflict resolution. 2.Change tracking on the server as well as the client so that only data differences are exchanged. 3.Peer to Peer sync in the forthcoming v2 of Sync Framework. 4.Sync with databases other than SQL Server. 5.Best suited for SSCE running on a desktop or laptop.

RDA may provide you better performance if: 1.Your Primary Keys use GUIDs instead of Identity columns. 2.Users don’t overwrite each other’s data so you don’t need conflict resolution. The rule of “Last in Wins” works for you. 3.While you want indexes to be pushed down, you don’t care if your local SSCE database has referential integrity constraints applied. 4.You want to wrap the changes you upload to SQL Server in a transaction so that all changes are applied or none of them are. 5.Change tracking on the client is good enough and re-downloading updated server tables doesn’t take too long. 6.You developers don’t mind writing some sync code. 7.Be able to execute SQL and Stored Procedures directly against SQL Server via IIS. 8.You’re downloading read-only data.

If you need anything more, just shout.

JohnnyJP