There are two basic approaches to AJAX development
- Partial Screen Update
- Asynchronous Communication
For background, see the AJAX: Asynchronous Java + XML? article by Coach K. Wei at:
Partial Screen Update
With this approach to AJAX development, only the part of the screen that has has new information is updated. During user interaction within an AJAX-based application, only user interface elements that contain new information are updated; the rest of the user interface remains displayed without interruption. This "partial screen update" approach not only enables continuous operation context, but also makes non-linear workflow possible.
With this approach to AJAX development, communication with the server can happen asynchronously. For an AJAX-based application, the request and response can be asynchronous, decoupling user interaction from server interaction. As a result, the user can continue to use the application while the client program requests information from the server in the background. When new information arrives, only the related user interface portion is updated.
In the initial design of enabling AJAX in Spread for Web Forms, we used the Partial Screen Update approach. This involves synchronous calls back to the server, but only for the element that needs updating (the Spread control). The main reason for this decision was to avoid the conflicts possible with the Asynchronous Communication approach. If we did an Asynronous callback and the user typed data into the Spread and clicked the update during the callback, then you would have conflicting models on the server and it would be up to the developer to decide how to resolve these conflicts. It seemed as if the Partial Screen Update was less burden on the developer. The Microsoft TreeView control as well as others use this approach, so we are not alone in choosing it.
For a future version of the product, we are researching the best way to implement AJAX support that gives the option to the developer to decide which development approach they would prefer. We, of course, would need to document the pitfalls of an updateable Spread using the Asynchronous Communication approach.