Harry Fuecks 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 article for a better explanation of both.
This topic is very relevant to me at the moment because of the project I am currently working on. Quickly explained, I'm working on a team that is building a distributed SOA for wireless clients. Thus bandwidth and latency issues become a HUGE problem. The solution we've come up with is to put a webserver locally on the client machine. Thus, Ajax & HTML are served from localhost. Then, when data is needed, PHP handles fetching and caching locally over the wire.
Rather than Javascript -> Client PHP -> Server PHP, this would be easily accomplished using Javascript -> Server PHP. This is where the concept of Client/SOA really begins to shine.
Imagine if you could break the dependancy of the client application (HTML & Javascript) from the source server. For instance, take a project like vTiger CRM. It's got a really complicated interface that definitely needs to have a databackend. However, because it's open source and can be installed all over the internet, each client is usually tied to a specific server instance. If you could design the client to break away from that server instance and allow it to choose what server it uses as it's data backend, you're already designing Web 2.1 or 3.0 or whatever.
This opens up a variety of other possibilities as well. Think bittorrent for PHP applications. Bookmarks are the easiest piece of data to relate this to. Imagine this, 10 installations of a delicious clone on 10 different servers numbered "Install1" through "Install10". Then, each different server has 10 clients numbered "Client1-1" through "Client10-10".
The current state of the web is to treat each Install as it's own island of data. That is why delicious is to popular, it brings many users together. However, most Web 2.0 startups really have the problems of scalability that come with a zillion users and cannot easily grow to a useful size. What if each installation could talk to each other? Then, you create a group of installations organized on different servers that share information. All of a sudden you've got something that's more valuable to users. Finally, allow each user to roam from one Install to another. Their data travels with them because it is simply pulled from their home Install when necessary.
Technologies like REST, JSON and in a small part XML really bring this together. All the pieces are there, it just needs to be built.
Lots of brainstorming here. Please comment below if you find this interesting. Distributed applications and a detached Client/SOA architecture has some really powerful benefits and could definitely have a huge impact on the user experience.
HTML++, Client/SOA and Web 2.1
Wed, 02/15/2006 - 9:03am

