I think that developing high performance, interactive, low bandwidth and multiuser Web Applications through AJAX based technolgy is something between the most complex stuff to manage.
We had to build a complete customizable portal with completely customizable modules and CRM application, where the user could build ad-hoc interface (something like MS CRM does) selecting what modules to have in any page of the Portal. The worst is that the goal was to provide a client-like interface with about a lot of interactive grids and screens and provide a real time feedback to the user, just like any windows-like application, but on the web.
Basically, AJAX is very powerful and the goal is quite reached. However, I have to say that the design of such an application must take into consideration a lot of aspects:
– Roundtrips between client and server : performance killer as latency is very high
– Asyncronous loading of content and content-ready syncronization : syncroninzing readystate for all DOM objects is one of the most difficult aspects on complex applications where asyncronous loading of the content is performed
– Caching of scripts and dynamic information (per user, per application and so on )
– Caching of server-side objects to reduce database server multiple queries for the same data
Taking into consideration all these aspects, along with development of a consistent and dynamic UI is not simple using AJAX.
I am wondering about some sort of differential HTML rendering to deliver only a sort of "differences" between the first request and the subsequent ones in a sort of "commands" like the diff algorithms to find the "edit distance" of two strings. Basically it’s the same mechanism used for remote desktop applications…
This will for sure reduce the roundtrips, takes the complete execution on the server, and returns only the difference reducing the payload and allowing for slow connections.
Obviously, all this stuff can be combined with native IIS 6 HTTP compression for the pages thus reducing again the payload and download times.
Stay tuned for updates… hope to have soon… but "all the other" work is still taking me out of this stuff now.