Keep things decoupled with abundant usage of events.
* On client Backbone.sync does AJAX calls
* On server Backbone.sync talks to database
In some cases we also do Backbone.sync via socket.io
Note: Backbone.sync is the method all I/O operations on Backbone.js models and collections call. You can either use the default AJAX-based implementation that Backbone.js ships with, or override it with your own.
But models are generally just objects. They know how to handle and manage data. Nothing spectacularly complex.
As far as saving state goes there are different ways of doing it, the vanilla way backbone uses however seems to simply be making REST requests to the server.
You don't really have a request dispatcher on the client side (a controller). Instead, you have a View Model, which is basically a representation/manager of the View in JS code (where the View itself is HTML).
... it gets complicated.