22. A computing device configured to participate in a collaboration session, comprising: a processor; a network interface for sending data over a network while participating in the collaboration session; a memory having computer-readable media with computer-executable components for exchanging data in the collaboration session, including: a data update bus configured to automatically propagate data updates from an application's user interface to one or more documents bound to the application; a state manager that automatically causes the state of the application's view to be described in one or more state documents; a collaboration manager configured to: identify the occurrence of data updates affecting the one or more documents bound to the application and state changes affecting the visual display of the application; and cause transactions describing the data updates and state change to be encapsulated and transmitted to a second computing device that is participating in the collaboration session.
22. A computing device configured to participate in a collaboration session, comprising: a processor; a network interface for sending data over a network while participating in the collaboration session; a memory having computer-readable media with computer-executable components for exchanging data in the collaboration session, including: a data update bus configured to automatically propagate data updates from an application's user interface to one or more documents bound to the application; a state manager that automatically causes the state of the application's view to be described in one or more state documents; a collaboration manager configured to: identify the occurrence of data updates affecting the one or more documents bound to the application and state changes affecting the visual display of the application; and cause transactions describing the data updates and state change to be encapsulated and transmitted to a second computing device that is participating in the collaboration session. 24. The computing device as recited in claim 22 , wherein to identify the occurrence of state changes affecting the visual display of the application includes: determining whether a user interface component that experienced a state change is an atomic component; if the state change affects an atomic component, obtaining data describing the state change from an in-memory object; and propagating data describing the state change to the one or more state documents.