title: Client-service interaction logic
body: <p>There seem to be several ways to implement client-service interaction logic.</p>
  
  <p><strong>Variant 1</strong></p>
  
  <p>Client implements an object model similar to object model on a service (e.g. <code>WCF Data Services</code>). Client makes changes to objects, creates and registers new objects. When done, state of created and changed objects is sent to service. Service restores existing objects from the database / creates empty objects and merges state.</p>
  
  <p><strong>Variant 1b</strong></p>
  
  <p>The same as V1 but instead of sending state client sends changes in objects' state to service.</p>
  
  <p><strong>Variant 2</strong></p>
  
  <p>Client doesn't send object state to service at all! Instead it invokes service methods, service changes objects and notifies client about changes. Client applies these changes as is.</p>
  
  <p><strong>Questions</strong></p>
  
  <ol>
  <li>What variant is preferable?</li>
  <li>How is the second variant called exactly and where can I find more information about it?</li>
  <li>What framework can be used to make changes in objects' state on service <em>automatically</em> apply on client?</li>
  </ol>