My Take on “Ajax”
There has been a lot of talk lately about making web applications
more like client applications using javascript and asynchronous xml web
requests. I first noticed the buzz after reading this article at Adaptive Path by Jesse James Garrett.
Garrett does an excellent job of explaining how web apps can take
adavantage of asynchronous requests to give the user a better
experience.
Then on Thursday, Mary Jo Foley wrote her own article
about this, linking to the Adaptive Path article, and speculating on
the future of Microsoft’s fat client strategy. She wonders if
these improved web applications will be good enough for people to not
want to revert to client apps, instead just continuing to push the
envelope with web based technologies.
Scoble and Joseph Cooney
have also weighed in, and they both think that while these web apps are
cool and interesting, they cannot be as good as client apps. Cooney
gives some excellent reasons, including the fact that javascript is not
compiled or statically typed, and that unless you use some sort of
obfuscation, your javascript source code is freely available.
We have used this technology since late last summer in building our
current custom web application that manages contacts, email, calendar,
leads, and host of other business processing data. From my experience I
also think that using asynchronous calls are very cool and they do
enhance the user experience a ton, however, I do not think that this
can replace client applications completely. Javascript is still
slower than compiled client code, and if the user is ever offline,
javascript cannot handle the situation gracefully. Unless you are
using some ActiveX, you cannot touch the users local disk, so you
cannot cache large amounts of data locally. When we test our
application on slower computers, the browser consumes much of the cpu
when it is rendering complex controls, and while we certainly aren’t
the best at using this technology, Outlook has no problems running
smoothly on the same computer. Client apps have the
advantage of having the entire local machine as a resource, getting
benefits like threading and IO, while any web based approach has to
deal with the browser as an intermediary, which is inherently less
efficient.
Some of the benefits of using the web are ease of deployment and
cross platform compatibility and these benefits have never been shared
with client applications until recently. Now, you can run
your .Net applications on Unix, Linux, and Macs by using Mono,
an open source implementation of the .Net framework, including asp.net,
written in C#. Deployment is also getting much better with the release
of ClickOnce.
If you can update your users with a new version quickly and seamlessly,
as MSN Messenger does, then I would pick to use a client app over a web
based one any day.
Anonymous said,
Wrote on March 20, 2005 @ 7:35 pm
Ajax is just ONE simple delivery model for richer than previously unrich web apps.
The big hurdle is in getting your application installed. Web apps with Ajax make it so that there is no installation, just go to the web page (things might be installed behind the scenes). ClickOnce is promising, but a properly architected ClickOnce app is still not as cross-platform as a rich web app (or an Ajax app).