SaaS = Web Component + Desktop Component + Sync
I tuned to Mix07 yesterday to listen to the keynote from Ray Ozzie. Ray draws the picture for the software and service model. One important statement in the keynote made feel really good, Ray said “Even software as a service vendors have found a need to expand their offering to include offline edition”
This is a fact. There is growing interest in building offline applications especially with the new breed of web 2.0 applications. It is much faster to edit your documents on the desktop, yet it is more convenience to store them on the web and be able to access them anywhere. Web based everything is a weak vision and won’t materialize given that SaaS vendors are building offline experiences.
If you buy into this new world of software plus service then you must look at synchronization as the enabling technology. The Synchronization Services of ADO.NET is one step in this direction. Using web service or WCF you could easily expose your data to your web clients.
Building rich applications on the client that takes advantage of the processing power, storage, and graphics on the desktop for better user experience and reduce the load on the web server for better scalability is a great model that is gaining momentum everyday. For this vision to materialize, synchronization technologies have to become mainstream and part of every developer toolbox. With that, I think you know why I feel good … [tip: my team is responsible for sync technologies across Microsoft!] ….
Update: Just to let you know, I left Microsoft to start a new company, Raveable Hotel Reviews . See Examples: Romantic Hotels in Myrtle Beach , Top 10 Hotels in Seattle , 5 Star Hotels in Miami, Hotels with in-room jacuzzi, Family Friendly hotels in Anaheim and Best Hotels in Fort Lauderdale . Your feedback is welcome ontwitter.com/raveable, raveable blog.
Comments
Anonymous
May 01, 2007
The comment has been removedAnonymous
May 01, 2007
Rafik - I think the whole MS Sync Services is going to rock once we can build a Silverlight app that can store data locally (using SSCE), sync using MS Sync Services and function offline!!!Anonymous
May 02, 2007
Hi Udi, I listened to your cast and I disagree with you. The scenario you mentioned regarding address change and whether a conflict should be detected if another change is made to the same row but in other set of columns is usually addressed by column level tracking. SQL merge replication supports column level tracking, but OCS does not at this point. When simultaneous changes to the address fields are made, you got a conflict regardless of the type of sync engine: state based sync like OCS; event based sync like the approach you suggested. State based synchronization algorithms are simpler and more reliable. Event based synchronization algorithms are extremely complex and unreliable. I am basing my assessment on my previous experience building windows file replication engines, one of which is event based system. OCS scope is to enable developers to easily build sync scenarios with most needed features, exposing set of events for developers to intercept the data while in flight and apply any business logic they might have. It is a developer framework and not end-to-end solution like merge replication. Thanks, RafikAnonymous
May 02, 2007
Hi Nick, I totally agree with you. However, the offline story is has to be in the browser only since the SilverLight team made it clear that they are not planning to enable building SilverLight apps for desktop. I am reading the news here just like you; no insider info :) Thanks, RafikAnonymous
May 29, 2011
Dear All, SYNC IS VERY VERY SLOW (With batching) using bidirectional by terminal I have implemented batching from syncguru website, now it is working fine, but it takes a long time to complete the process. "Demo VIII: Offline Application - Batching" the link is www.syncguru.com/.../SyncServicesDemoBatching.aspx Total records in my table : 60,000 records BatchSize : 3000 Total Duration : For updating 1000 records, it takes more than 90 seconds i need to reduce the "Total Duration" upto 30 seconds atleast. Please provide your valuable suggestions. Thanks in advance. regards yesu -- -- *********************************************** -- NewAnchor proc with batching support -- *********************************************** -- create procedure [dbo].[sp_new_batch_anchor] ( @sync_last_received_anchor bigint , @sync_batch_size int, @sync_max_received_anchor bigint output, @sync_new_received_anchor bigint output, @sync_batch_count int output) as if @sync_batch_size <= 0 or @sync_batch_size is null set @sync_batch_size = 3000 if @sync_max_received_anchor is null set @sync_max_received_anchor = min_active_rowversion()-1 -- @@DBTS --min_active_rowversion()-1 -- simplest form of batching if @sync_last_received_anchor is null or @sync_last_received_anchor = 0 begin set @sync_new_received_anchor = @sync_batch_size if @sync_batch_count <= 0 or @sync_batch_count is null set @sync_batch_count = (@sync_max_received_anchor / @sync_batch_size) + 1 end else begin set @sync_new_received_anchor = @sync_last_received_anchor + @sync_batch_size if @sync_batch_count <= 0 or @sync_batch_count is null set @sync_batch_count = (@sync_max_received_anchor / @sync_batch_size) - (@sync_new_received_anchor / @sync_batch_size) + 1 end -- check if this is the last batch if @sync_new_received_anchor >= @sync_max_received_anchor begin set @sync_new_received_anchor = @sync_max_received_anchor if @sync_batch_count <= 0 or @sync_batch_count is null set @sync_batch_count = 1 end