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!