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 removed

  • Anonymous
    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, Rafik

  • Anonymous
    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, Rafik

  • Anonymous
    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