title: What triggers UI refresh in CQRS client app?
body: <p>I am attempting to learn and apply the CQRS design approach (pattern and architecture) to a new project but seem to be missing a key piece.</p>
  
  <p>My client application executes a query and retrieves a list of light-weight, read-only DTOs from the read model.  The user selects an item and clicks a button to initiate some action.  The action is performed by creating and sending the corresponding command object to the write model (where the command handler carries out the action, updates the data store, etc.)  At some point, however, I need to update the UI to reflect changes to the state of the application resulting from the action.</p>
  
  <p>How does the UI know when it is time to refresh the original list?</p>
  
  <p><strong>Additional Info</strong></p>
  
  <p>I have noticed that most articles/blogs discussing CQRS use MVC client apps in their examples.  I am working on a Silverlight client right now and am beginning to wonder if the pattern simply doesn't work in that case.</p>
  
  <p><strong>Follow-Up Question</strong></p>
  
  <p>After thinking more about Bartlomiej's response and subsequent discussion, I am wondering about error handling in CQRS. Given that commands are basically fire-and-forget asynchronous operations, how do we report an error condition to the UI?</p>
  
  <p>I see 'refreshing the UI' to take one of two forms:</p>
  
  <ol>
  <li>The operation succeeds, data has changed and the UI should be updated to reflect these changes</li>
  <li>The operation fails, data has not changed but the user should be notified of the failure and potential corrective actions.</li>
  </ol>
  
  <p>Even with a Post-Redirect-Get pattern in an MVC, you can't really Redirect until you know the outcome of the operation.  None of the examples I've seen thus far address these real-world concerns.</p>