Think this needs stating clearly, following the comment from Bill Edney on of technicalpursuit (Tibet), and because I think it reflects experiences people are having with AJAX.
In short think there’s going to be two kinds of AJAX application, one I’ll dub “HTML++” and the other being the Client / SOA Bill mentions. To describe them roughly…
HTML++
AJAX is used to enhance existing HTML forms / user interaction but the fundamental paradigm is still the same as “normal” web applications. Some key smells of this style;
- Page reloads still happen frequently
- It’s possible (if you make the effort) to degrade gracefully to non-supporting browsers / browsers with JS turned off.
- Session state still resides on the server.
In practice this is what everyone’s doing right now, with varying degrees of success. For many I think the effort and cost to “go HTML++” will far outweigh the benefit. Practically think this is best done server-side with tools like HTML_AJAX that do the “thinking” for you (side note: while giving this talk, mentioned JPSpan is effectively dead – HTML_AJAX is, to some extent, it’s successor – it’s a bit like PEAR::SOAP and NuSOAP).
Meanwhile an interesting “in between” example, which I think highlights the divide, is the script.aculo.us shopping cart. Every time you place an item in the cart, it tells the server about it then retrieves a fresh list of cart contents and updates the client side. In other words the server is the judge of what’s in your cart. It’s interesting because you might argue that the cart could stay purely client-side, only sending anything to the server when you decide to head to the “checkout”. In practice though, it’s likely the cart would be used on sites where it’s expected to work across multiple “pages” (or tabs), which share a single server-side session.
Client / SOA
As Bill called it Client / SOA will use the same. SOA may not yet be concept which readily communicates ideas. My angle of understanding this begins with asking AJAX: what’s a session?. An alternative angle comes from Cédric Savarese over at Form Assembly in Ajax: It’s not all about XMLHTTPRequest (and part 2), a train of thought which leads to what he’s done with the freja framework.
Some of the key smells with Client / SOA;
- Page reloads are rare, if at all. The application tends to run in a single browser window.
- It’s practically impossible to degrade gracefully, without maintaining seperate code bases.
- Session state is largely handled by the client.
- Javascript and the browser are acting as a runtime in the same sense as the Java or .NET runtime.
- It’s going to require specialist developers
Really it’s probably wrong to use the word AJAX here at all. To enable this style of application you need a lot of Javascript glue and what we call AJAX would likely be so deeply buried that it’s barely reflected in the APIs you call as an application developer.
As far as I know, Tibet is the only Open Source project today which would be capable of making this happen and, right now, there’s no code available – you need to wait for the next release (due soon). Meanwhile, via Google, you’ll find people raving about Tibet all the way back to April 2001.
What kind of applications will be built this way remains to be seen. Superficially these will be the equivalent to today’s desktop applications but think the winners here won’t be those simply trying to re-invent what already works. For example the race is already on to build web based Office Suites, but I think that’s largely a fools game. Thinking in terms of MS Word, specifically, if you’ve ever seen what companies typically do with Word templates and consider why MS developed InfoPath, you realise that word processors as a “unit of application” is no longer interesting. Something more like “living documents”, relevant to a specific type of information a group of humans is trying to organise, and incorporating things like collaboration, versioning and workflow is far more interesting.
Also this kind of application could, potentially, be eclipsed by another technology, such as stuff Microsoft are packing into Vista or something XUL-based (perhaps just Firefox extensions). Think alot depends on what happens in the next 12 months.
Anyway – thats just my thinking, bordering dangerously on marketecture, but in the interest of trying to nail down the relevance of AJAX.







[...] On the SitePoint PHP Blog, Harry Fuecks discusses what he sees as the two types of Ajax applications out there – “HTML++” and the standard “Client/SOA” model. [...]
February 15th, 2006 at 10:51 am
HTML++, Client/SOA and Web 2.1
Harry Feucks over at Sitepoint just put up a great article about the different uses of Ajax out in the wild today. He affectionately calls the two categories, HTML++ and Client/SOA. I would suggest reading his
February 15th, 2006 at 11:22 am
Thanks for mentionning my work with the Freja framework. I think you nailed it by making this distinction in the Ajax field (html++ vs. fat client/soa). So much attention is on the xmlHttpRequest object right now that I feel I’m not doing the same thing at all.
With Freja you can effectively implement a Client / SOA application. But Freja is a lightweight framework, mostly focused on client-side application state handling and UI rendering, far from being as ambitious as Tibet.
February 15th, 2006 at 1:08 pm
More meaningless buzzwords. Hooo-raa. Ever since ‘AJAX’ became a popular term it seems that every single webdev blog author is on a mission to create their very own buzzword.
These bloggers, or BloWOEs as I call them (Bloggers With Oversized Ego), need to stop this pathetic self promotion and get back to talking about actual methods.
Let’s put an end to all the BloWOEs.
February 15th, 2006 at 2:15 pm
Another client/soa product…
this one won InfoWorld 2006 Technology of the Year award: TIBCO General Interface, which has been shipping in market since 2001. It’s very cool with lots of components, communication methods and a visual tooling package that itself is an Ajax app. The drag and drop binding to XML and SOAP messages is pretty sweet I must say (but I’m biased becuase I’m from tibco). Nonetheless take a look.
See InfoWorld’s coverage: http://weblog.infoworld.com/udell/2005/05/25.html
… or get it at http://www.tibco.com/mk/gi
–Kevin @ Tibco.
February 15th, 2006 at 3:17 pm
I sincerely hope you were trying to be humorous by inventing a new term for people who invent terms :) Otherwise, pot/kettle/black.
February 15th, 2006 at 3:36 pm
Yes, thankyou, that was the joke.
February 15th, 2006 at 4:10 pm
GenInterface, which was purchased by Tibco, provided incredibly robust one-window browser-based apps way before “Ajax” was coined. Its tech shows up in Tibco’s software:
http://www.tibco.com/software/business_optimization/gi_resource_center.jsp
They were doing things like pulling down large quantities of data and being able to sort and filter them locally. All in the browser.
February 15th, 2006 at 6:58 pm
[...] SitePoint’s PHP Blog (of all places): AJAX is used to enhance existing HTML forms / user interaction but the fundamental paradigm is still the same as “normal” web applications. Some key smells of this style; [...]
February 15th, 2006 at 9:35 pm
[...] Read the rest of the article. Technorati Tags: Ajax, Javascript, Programming [...]
February 15th, 2006 at 9:54 pm
LOL more pointless buzzwords. And this time the author has made them up. As guiness would say, brilliant!
February 15th, 2006 at 10:06 pm
Come on. Inventing buzzwords beats doing real work any day ;)
February 16th, 2006 at 8:21 am
I hate pointless buzzwords. Or as I prefer to call them, PLeBz.
Everyone start using the word PLeBz! Please! It’ll make me famous! Then I can write a book called “Web3.11++AJAX JSON The PLeBz generation” and make lots of money! Yey for buzzwords! They’re much more fun than articles on meaningfull web practice.
And before someone thinks they’re being clever, I’m being a sarcastic sod.
…
Or a “sarcod”, as I prefer to call it.
February 16th, 2006 at 8:59 am
[...] Harry Fuecks suggests there are two types of Ajax apps: HTML++ and Client/SOA. This is something I’ve noticed too, and it cuts right across the Ajax architecture, impacting on the user-interface, the physical architecture (browser-server separation) and the abilities of the developers involved. [...]
February 16th, 2006 at 12:32 pm
[...] Teilweise nachzulesen in Harry’s Blog auf http://www.sitepoint.com/blogs/2006/02/15/two-kinds-of-ajax-html-vs-client-soa/ [...]
February 16th, 2006 at 2:28 pm
Looks like Tech2All.com stole this post: www.tech2all.com/2006/02/17/two-kinds-of-ajax-html-vs-client-soa/
February 16th, 2006 at 3:32 pm
Great material, though I think Client/SOA will require less specialist developer talent pretty quickly as tools step in to help with the grunt work.
More coverage of this here on my ZDNet blog.
Keep up the great work,
Best,
Dion
February 16th, 2006 at 5:00 pm
Thanks for pointing that out, Joshua. We’re on it.
February 16th, 2006 at 7:53 pm
I hear ++HTML is slightly faster than HTML++… ;)
February 16th, 2006 at 8:42 pm
Whats your abbreviation of “stealing”… While provide link to the Original Site.. Anyway Doesn’t matter..
February 22nd, 2006 at 6:02 am
[...] Now before I go any further—this is not a PHP problem despite the title (I hope the web ring is paying attention)- this is is a feature of HTTP—it’s stateless. The problem is really the blurring of lines AJAX introduces—this goes right to the line between the two kinds of AJAX – is the client or the server managing state? [...]
February 28th, 2006 at 10:38 am
[...] Ajax use in web applications falls along a spectrum ranging from small usability enhancements such as auto-populating a drop-down without reloading the page (dubbed by Harry Fuecks as HTML++), to mopre full-blown client-side apps, where lots of business logic is in JavaScript on the browser. How you choose to use Ajax will affect your security posture, as we will explore in future posts. [...]
August 14th, 2006 at 1:59 pm
thanks richardson.ı missed you.
July 23rd, 2008 at 9:26 pm