In the last entry, I have summarized choices we have while writing a JavaScript RIA (or AJAX application). They are under these seven categories:
- Communication Model
- Communication Style
- Push Communication Style
- Transportation Protocols
- Data Format
- UI Rendering
- UI Update Style
These categories are actually order in a particular user request:
- Is it an asychronous or a synchronous?
- Use iFrame or XHR?
- Use iFrame or HTTP 1.1 chunked for push data?
- Data is transmitted with HTTP, XML-RPC, or SOAP?
- Data is returned in what format (plain text, HTML, JSON, Base64, XML)?
- The data is the rendered UI or the data values for the client to render the UI?
- Use innerHTML or use DOM to maniuplate the UI?
The combination of the technologies can be summarized in the following graph:
To make any design decision, we may highlight the nodes and paths in the graph in top-down manner. For example, in the case of original AJAX defintion, we may hightlight Asychronous, XHR, HTTP/REST, XML, and Client Side Rendering:
The UI update style is undetermined up to this moment. We can make a complete decision before sending the design to programmers. Designers and programmers may have different preference of AJAX approach. With this simple graph, designers can communicate and synchronize with programmers more effectively. The architect can also use the graph to generate the implementation blueprints for programmers to follow so that more maintainable code can be expected.