Published
Thursday, March 17, 2005 1:27 AM
by
mtaulty
I keep hearing about "Ajax" and it's not the
cleaning
product that I remember from childhood.
There's a really well written description of Ajax up here
at
the Adaptive Path website - essentially Ajax is about getting a better web
browsing technique by avoiding the refresh of the entire HTML page whilst you
make XML (web service like) requests to a back end over HTTP from within script
on the browser.
It's a strange thing that this is being described as a new technique
as I've seen ISV's doing this with their browser based applications in the UK
for years - it might be true to say that those applications are mostly intranet
applications so maybe it's got some newness in terms of public internet apps or
possibly it's getting more attention as it's being used in a couple of the big
Google pages right now - namely for the new
maps service and for the
suggest service, both
of which are pretty cool.
The "Ajax" stuff also lines up with a CNET article around Google's potential
for building a platform
with these kinds of applications and (once again, in a Network Computer style
manner) making the local machine redundant.
In the Ajax world the user sits in a browser and downloads a bunch of HTML
and script which the interpreter runs and when they play with bits on the page
that script submits more XML back to the server side to refresh certain portions
of the visible document through the DOM model.
If we compare that with the .NET
"Smart Client" model that Microsoft has for applications today then the user
would sit in a rich application that's designed for the device they're running
on which is compiled up and when they play with their data the client submits
XML (in the form of SOAP) back to the server side to refresh certain portions of
the UI through the Windows Forms object model.
These two models are not a million miles apart in that in both cases the
intention is to build a better user experience through a richer client making
use of XML-Web-Service like back-end infrastructure. The main
differentiators in all this would seem to be;
1) Reach. Web browsers are pretty much everywhere whereas the .NET
Framework isn't everywhere today and isn't really anywhere when it
comes to non-Windows platforms. There's nice technology in .NET 2.0 to
slipstream the deployment of the .NET framework so it's less of an issue for
the users of the applications.
2) Programmer experience. The "Ajax" stuff depends on manipulating the
HTML DOM from interpreted script code. To me, that's pretty ugly. I really
don't like manipulating the DOM and I really don't like writing script code
of any kind. Anything that doesn't have type safety as a starting point is
just a backwards step for me. I know that's not the case for everyone but I
think it's hard to argue that script is a productive way to be writing code.
3) Working online and offline. There's nothing in the "Ajax" stuff right
now about what you do if the network isn't there. I know we're supposed to
be living in a world of constant connectedness but in reality I find I'm
disconnected from the network a lot of the time. Sometimes it's
because I'm out on my travels and sometimes it's because the network simply
isn't working right now. I want applications that run for me when the
network's not there. A prime example would be the way Outlook 2003 has my
mail on my hard drive when I can't connect to the network. I need that. Even
more so, I need my photos when I'm not connected to the network, I need my
MP3's and my movies too. Local storage is what I want until the network is
as ubiquitous as the power supply and, today, it's not even close.
It's going to be interesting to see how this all pans out - more interactive
applications in the web browser or more interactive applications on the client
or (fairly likely I guess) both :-)