Yes, when you use manual sync (with auto sync enabled=false) , the
client will still both detect changes made on that client and push them
to the server and receive pushed changes from the server and apply them
on that client.  The difference is in how messages are routed from one
client to the next.  Rather than the server tracking which data each
client is actively managing and pushing only the right data to the right
clients, you need to set up the routing rules yourself with the publish
and subscribe rules.  

 

One other difference is that the "refresh fill" process - i.e. where the
server refreshes fill methods after an insert or update or explicit
"refreshFill" call is made on the server does not work with manual sync.
Since the server has no knowledge of what fills each client is actively
managing and does not cache its current set of ids, it can't refresh it.
You can still update queries by using the
DataServiceTransaction.addItemToFill and removeItemFromFill methods.  Of
course the other server side methods updateItem, createItem, and
deleteItem also still work though make sure that any use of these apis
also supply the producerSubtopics or producerDefaultHeaders needed to
route these changes to the right clients.

 

Here's a code snippet of some client code which sets up manual
subscriptions:

 

                personService.autoSyncEnabled =
groupService.autoSyncEnabled = false;   // turn off auto sync 

 

                personService.manualSync.producerDefaultHeaders =
{a:"4"};                         // if you use selector expressions this
is how you specify key-value pairs for the producer

 
personService.manualSync.producerSubtopics.addItem("grouptopic");
// more commonly this publishes to a specific subtopic

 
personService.manualSync.consumerAddSubscription("grouptopic", "a IN
('3', '4', '5')");     // subscribes both to a subtopic with a selector
expression 

                personService.manualSync.consumerSubscribe();
// this actually initiates the "subscribe" 

                groupService.manualSync.producerDefaultHeaders =
{a:"4"};

 
groupService.manualSync.producerSubtopics.addItem("grouptopic");

 
groupService.manualSync.consumerAddSubscription("grouptopic", "a IN
('3', '4', '5')");

                groupService.manualSync.consumerSubscribe();

 

Jeff

 

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of changlim
Sent: Thursday, October 25, 2007 9:06 AM
To: [email protected]
Subject: [flexcoders] FDS ManualSync and AS [Managed] Metadata

 

Hi All, 

I am dealing with very large data sets and is thinking of using 
FDS "manualSync" (instead of <auto-sync-enabled>true</auto-sync-
enabled>) for pushing server data updates to the clients. To 
use "manualSync", the client code needs to subscribe to the DataServer 
for changes. From reading the FDS user guide, it was not clear to me if 
FDS would be able to handle data updates for me (after the client 
subscribes to the changes). 

Does having the [Managed] metadata tag in the AS class still work when 
I am using "manualSync"? Or does the client now needs to provide 
callback to handle updates from the manualSync channel?

Anyone has example on how to do this? 

Thanks in advance! 

 

Reply via email to