AJAX (by alaric)
Now, knowing me, you're probably wondering what solution to this issue (the desire for a "more semantic" Web versus the desire for a "glossy rich user experience" Web) I have in mind for ARGON...
Well, the way user interaction works in ARGON is that an entity provides:
- Information. The information is in the form of First-order predicate calculus, a bit like RDF. Accessing an entity's information is roughly equivelant to an HTTP GET.
- A message interface. The message interface provides a list of named commands, each with a specified list of parameters. Sending messages to an entity is roughly equivelant to HTTP POST / PUT / DELETE (the latter by sending special administrative commands)
Now, the information made available is a mixture of data and metadata. For simple publishing entities, there will be a declaration in there that the entity has a "value" with a specified type; this is like a static HTML page, PDF, or other file type over HTTP. The user's viewer will look at the type of the value, and selected a viewer.
However, the entity can also provide special viewing code in its information. The user's viewer is free to ignore this if it is told to, or if the viewing code is not appropriate for the hardware the user's viewer has available - if there is no graphical display, then a special custom viewer that claims to need one will be ignored out of hand.
For anything that's more like an application, then the entity probably won't have a declared "value", and will instead just provide special viewing code that presents the application's user interface. The special viewing code can access the entity's information and its message interface in order to talk to the "back end".
The big difference between this and AJAX, Flash, or Java applets in the browser is that with those techniques, there's no easy way to find out what the backend services are. An AJAX or Flash app will probably be making HTTP requests to various URLs on the server in order to access the data to be displayed and to send commands back, but there's no easy way to find out what the services provided by the backend are. A Java applet may be using HTTP, or RMI.
But with the ARGON approach, the entity always provides a published list of information and message interfaces, so a user's viewer is welcome to ignore the special application code offered and just give the user a list of information and message interface commands.