Occasionally Connected Systems Sync Framework
Recently I’ve been giving some presentations on our upcoming sync framework. This new sync framework is designed to fill the void between the simplicity of RDA (Remote Data Access), full featured, but complex, Merge Replication, and raw components of DataSet. This new sync framework is designed to work over services, 2 tier and work with any back end system.
Because a picture is worth a thousand words, and a video is worth a book, I’ve posted my deck and a screen cast to demonstrates the features we’re working on.
OCS Power Point Deck
Screen Cast of the new Sync Framework demonstrating the architecture and details of download scenarios
Steve
Comments
Anonymous
October 14, 2006
As you may be aware, after all I have given some presentations about it, I like SQL Everywhere and itsAnonymous
October 14, 2006
Hi Steve, Nice job :-) Let me know when you start sending out CTP bits. I would very much like to give them a try. MauriceAnonymous
October 14, 2006
Steve Lasker has posted a good screencast that walks through how new sync framework will work. ...Anonymous
October 15, 2006
Will OCS Sync Framework support column-level change detection as an option, or does it deal with rows only?Anonymous
October 15, 2006
The comment has been removedAnonymous
October 16, 2006
The comment has been removedAnonymous
October 16, 2006
You mentioned that it can be used to sync services. Do you have any way of doing change detection of the data coming from these web services or is it up to the developer to build this into the web services?Anonymous
October 16, 2006
Steve has a great post (with Video and slides) for building offline apps… Worth a look! My guess is lotsAnonymous
October 16, 2006
The comment has been removedAnonymous
October 18, 2006
Steve, where and how does conflict resolution come into play here? Conflicts cannot be avoided in disconnected scenarios with fully bidirectional sync:
- client A makes some changes while offline
- client B syncs conflicting changes (w.r.t. A's local changes) to server
- client A back online, tries to sync
- conflict has to be resolved As I understand it, the server sync agent would have to detect stale writes / conflicts (on a per row basis by means of a revision number, for example) and report them back to the client (both the client's values and current server values) for resolution. Karl
Anonymous
October 19, 2006
Very interested in the testing the framework. How do I go about getting the bits? I have a project that could benefit from this type of synchronization. Also, will this work on the compact framework? I have another project looming for a PPC device. Thanks, DontaAnonymous
October 19, 2006
Hi Karl, Yes, these are the scenarios we'll support. We'll support resolving the conflicts on the server or the client. Yes, you'll have both the client and the server row available to determine how you want to handle the conflict.Anonymous
October 19, 2006
Hi Donta, We're hoping to have CTP ready bits available in the November/December timeframe. I've been keeping a collection of the emails people have been sending me, so please use the Contact link above to send me the request. When we're ready, I'll be sending emails to those that have asked and we'll get started. For Compact Framework, as much as I hate to say it, we won't have CF support in the first release. The Compact Framework team just had too much to get done to take on the work. Because we will be shipping the OCS and SSEv runtimes out of band from the .NET FX and .NET CF frameworks we have a lot more flexibility. We hope to ship the .NET CF versions shortly after Orcas. We are doing the engineering work to make sure everything is designed to work on .NET CF. Meaning, we're testing the overloads and making sure the types we use are available on .NET CF, but the "taxes" we pay to fully support a platform are just beyond the scope of what we could finish in the Orcas timeframe for devices. SteveAnonymous
October 23, 2006
Does this OCS framework work with a client using a locally installed SQL Express DB? Thanks. WillAnonymous
October 23, 2006
Hi Will, I'm assuming you're asking about Express being installed locally. Not initially. Our initial focus is for SSEv as we're focused on the breadth of client apps and we see SSEv having a much broader adoption curve. In order to abstract the change tracking details on the client, we require the local store to have knowledge for change tracking. SSEv will ship a new release on, or before Orcas. When the next release of SQL Server ships, code named Katmai, SQL Express will be supported and another release of SSEv will be available with additional functionality. SteveAnonymous
October 24, 2006
I am curious what application you used to create the screencast?Anonymous
October 26, 2006
I've been using Camtasia: http://www.techsmith.com/camtasia.asp It's a great product. SteveAnonymous
October 31, 2006
SQL Server Everywhere gets a new nameAnonymous
November 02, 2006
The comment has been removedAnonymous
November 07, 2006
Steve Lasker has posted a great whitepaper that describes the differences between SQL/e and SSCE. ...Anonymous
November 14, 2006
Hi, Following your presentations on the forthcoming sync services at TechEd:Developers EMEA, I'm very much looking forward to taking advantage of it. I'd be grateful if you could include us in the CTP/early programs thanks Matthew PhillipsAnonymous
November 16, 2006
On Wednesday morning Steve Lasker delivered his second public webcast (the first...Anonymous
December 02, 2006
Steve... very nice... do you have the source you used for the demo posted anywhere? Keep up the awesome work... billAnonymous
January 22, 2007
Steve, do you have an update on when the CTP bits are going to be available? Thanks...derekAnonymous
January 22, 2007
Hi Derek, Funny you should ask. We launched the CTP today: http://blogs.msdn.com/stevelasker/archive/2007/01/23/sync-services-for-ado-net-ocs-ctp-now-available.aspx SteveAnonymous
October 14, 2007
Tras semanas de cacharreo con la beta 2 del Visual Studio "Orcas" decidí sacar un pequeño seminarioAnonymous
October 17, 2007
Hi, When syncing from Sql2005 (full or express) How does the sync framework handle data types that do not exist in the compact framework, such as Xml, varchar(max), nvarchar(somevaluegreaterthan4000) etc ?Anonymous
October 29, 2007
Hi Troy, We use the same mapping as Merge Replication. XML and VarChar(Max) become nText data types. With Sync Services you have a bit more control. If you pre-create the table, and the data "fits" we'll continue to insert/update the data. For instance, if you sync an int into a nVarChar column on SQLce, it will continue to work. Of course if you put Six in the local table, it will fail going up. We don't do mapping from english to decimal <g> SteveAnonymous
November 05, 2007
Cette semaine, à Barcelone, se tient le plus grand événement européen des développeurs sur les technologiesAnonymous
November 05, 2007
Cette semaine, à Barcelone, se tient le plus grand événement européen des développeurs sur les technologiesAnonymous
November 21, 2007
hello Steve, As far as I seen on the web, I miss some codes/samples/detailed description regarding 3 topics in Sync Framework: 1.mixing the synchronization - like synchronizing db to file system or vice versa
- Implementation of custom providers
- Sample code using the rss synchronization. You've mentioned above having some samples using the RSS synchronization. Can you share this code? Thank you in advance! Reka K.
Anonymous
January 18, 2008
Is it possible to use Sync to temporarily store Client-side text data from a Web Application that goes offline? Google Gears solves this problem, and while its seems to me that Sync supports Client/Server sync and offline storage, it doesnt seem that this is the case for web applications. Is this right?Anonymous
March 31, 2008
Hi, I would like to develop the sample web application by using Sync Framework. Is there is any sample application available. And can you please guide me about how to develop the application.Anonymous
April 10, 2008
Balaji, When you say "web application", are you referring to server side, or client side? SteveAnonymous
April 10, 2008
Hi, I would like to develop a Web application(Not a windows).I would like to enable the application to be available in offline mode.My exact requirement scenario would be, I have a web application with a web server. I need to sense the network ,whether it is offline or online. Then in online mode i can enter data directly to the server(this needs to be in sync with my local cached data). When i am unable to connect to the server,i should be able to access the application and save the data locally and sync them when i am connected back to server. I hope this would be definitely possible with MS Sync. But on browsing through various forums i got some sample applications which are windows application. But mine would be a web application. I sit possible with MS Sync and if yes is there any sample application available?Please redirect me in correct direction . Thanks in advance.Anonymous
April 10, 2008
The comment has been removedAnonymous
April 17, 2008
Hi Steve, Thanks for your reply. I need the web application which is working both online and offline(When network is not available). My web application has asp 2.0 in the front end and sql server 2005 in the back end. Please guide me how MS synch sense the network and synch features.Anonymous
April 21, 2008
I have a clarification regarding MSF.Is MSF targetted only for desktop application?I have a requieremnt for making my web application to work offline.So,that user can access the site uninterrupted,inspite of the network connection.On browsing for MSF and with the sample applications it is mentioned as MSF can take data offline and synchronize any kind of data when connected to the server.But,is it possible to render a web page in offline mode?( So that when the user is offline data will be captured in the local DB and when he is online data will be captured in the server and in online mode he can sync the data changes in local DB to the server) If yes please redirect me to the right place where i could get information on this.Anonymous
April 29, 2008
Hi guys, Sorry for the delayed response. I’ve been out of town visiting customers. I hear you saying “web application” and want to “work offline”. However, what it appears you’re asking for is for the database to be offline, but the web server is still available. I don’t think that’s what you mean to ask, but your saying you’re getting an error running Compact under ASP.net. In this case, you’re actually attempting to run SQL Server Compact on the Web Server, so you’re making an assumption the “browser client” can connect. So, you can enable SQL Server Compact under ASP.net, which I discuss here. My question is really what is the “client” to your “web application”? Is the user running in the browser? Or, is the user running WinForms or WPF on the client, and communicating to the database through a “web server” running “services”? For the WinForm/WPF client, you can absolutely run Compact there. For running code within the local browser, we don’t yet have anything to announce here. You could of course run Compact locally, and host it in an ActiveX control. SteveAnonymous
June 15, 2008
Tras semanas de cacharreo con la beta 2 del Visual Studio "Orcas" decidí sacar un pequeño seminarioAnonymous
September 22, 2008
I am not been able to download "OCS Power Point Deck", seems it is share with window authentication on. How do i go about it ? -AviAnonymous
October 09, 2008
I am implementing sync services across WCF, which so far seems to be working well. However, I need to be able to allow the client to resolve conflicts. From what I can see, you would want to subscribe to the ApplyChangeFailed event. That would be fine, but it only exists under the ServerSyncProvider which, unless I am missing something, cannot be accessed client side. I know you can subscribe to this event on the server, from within the WCF application in my case. But handling this server side only limits you as the user would not be able to decide how the conflict should be handled. My question is what is the recommended way of handling conflicts client side in an n-tier environment and is it possible to handle the ApplyChangeFailed event client side(clientProvider_applyChangeFailed is firing only at INSERT-INSERT conflicts) ?Anonymous
November 01, 2008
Hi, All the events you're looking for exist on the SqlCeClientSyncProvider. http://msdn.microsoft.com/en-us/library/microsoft.synchronization.data.sqlserverce.sqlceclientsyncprovider.aspx You can get this from the SyncAgent.LocalProvider. Hope this helps, SteveAnonymous
December 16, 2008
Di Steve, Your blog is really helpful and informative, it's been helping me in the current project i am working on, but i have a question. We are developing a web-application that needs to do the following: 1-local web application on the client deployed on IIS that works on a compact/express SQl database 2-occasionally this database sync with the main server database (2way) The question is: 1-is it better off using SSIS? 2-or i can use SyncFramework? though it is a web application and i heard that sdf is not accessed in the iis appdomain.Anonymous
June 12, 2009
I have the same problem as mdlathkar - I need to resolve server sync conflicts on the client. Steve, your suggestion above that the ApplyChangeFailed event is available in the SqlCeClientSyncProvider is not helpful. The documentation states: Occurs after a row could not be applied at the client. I need an event on the client that fires when the server raises it. It seems that a WCF duplex connection with a callback handler on the client is the only solution. I have found references of a sample application on the web for this scenario, but not the actual code. Given that I have had all sorts of issues with WCF duplex connections before, I'd rather not venture down this path. Is there any other option?Anonymous
November 13, 2009
I am using Sync Framework 2.0 for Synchronizing SQL Server 2005 and SQL Express database. I need to implement the conflict resolution logic for the same. I am trying to find out the equivalent of "ConflictResolver" property in "SQLCeClientSyncProvider" in SQLServer2005 /SQLExpress I have found out a sample at : http://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=sync&ReleaseId=1200 But sample doesnot give any implementation for conflict resolution. Please guide me for handling conflict resolution in case of SQLServer2005 and SQLExpress synchronization.Anonymous
June 20, 2012
Hi Steve, Can you kindly make a tutorial on how to deploy N-Tier VB applications on different machines. This application should be based on VB 2008 and WCF. I am struck with the deployment of presentation Tier. It works on same machine, but gives error after installing it on different machine. May be Endpoint Address Issue. but I tried a lot, but couldn't succeed. Thanks, Akbar