By Harry Fuecks

Two kinds of AJAX: HTML++ vs Client / SOA

By Harry Fuecks

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…


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;

  1. Page reloads still happen frequently
  2. It’s possible (if you make the effort) to degrade gracefully to non-supporting browsers / browsers with JS turned off.
  3. 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 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;

  1. Page reloads are rare, if at all. The application tends to run in a single browser window.
  2. It’s practically impossible to degrade gracefully, without maintaining seperate code bases.
  3. Session state is largely handled by the client.
  4. Javascript and the browser are acting as a runtime in the same sense as the Java or .NET runtime.
  5. 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.

  • Pingback: Ajaxian » Two kinds of AJAX: HTML++ vs Client / SOA()

  • Pingback: A Mountain Top()

  • cedric

    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.

  • Jaffa The Cake

    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.

  • Anonymous

    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:

    … or get it at

    –Kevin @ Tibco.

  • More meaningless buzzwords. Hooo-raa. Ever since ‘AJAX’ became a popular term…

    These bloggers, or BloWOEs as I call them (Bloggers With Oversized Ego)…

    I sincerely hope you were trying to be humorous by inventing a new term for people who invent terms :) Otherwise, pot/kettle/black.

  • Jaffa The Cake

    Yes, thankyou, that was the joke.

  • Patrick Breitenbach

    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:

    They were doing things like pulling down large quantities of data and being able to sort and filter them locally. All in the browser.

  • Pingback: Nels Wadycki » Blog Archive » Gmail = HTML++, Mvelopes = Client / SOA()

  • Pingback: Ajax Lessons » Two kinds of AJAX: HTML++ vs Client / SOA()

  • Mr. Buzzword

    LOL more pointless buzzwords. And this time the author has made them up. As guiness would say, brilliant!

  • LOL more pointless buzzwords. And this time the author has made them up. As guiness would say, brilliant!

    Come on. Inventing buzzwords beats doing real work any day ;)

  • Jaffa The Cake

    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.

  • Pingback: Software As She’s Developed - Ajax Lite Versus Ajax Deluxe()

  • Pingback: It’s a free world, baby… » PHP UK Conference 2006 - Bilder()

  • Joshua Eichorn

    Looks like stole this post:

  • Dion Hinchcliffe

    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,



  • Looks like stole this post:

    Thanks for pointing that out, Joshua. We’re on it.

  • I hear ++HTML is slightly faster than HTML++… ;)

  • Tech2All.Com

    Looks like stole this post

    Whats your abbreviation of “stealing”… While provide link to the Original Site.. Anyway Doesn’t matter..

  • Pingback: Ajaxian » AJAX and Session “Race Conditions”()

  • Pingback: afongen » Ajax Security, Part I()

  • hekimboard

    thanks richardson.ı missed you.

Get the latest in Front-end, once a week, for free.