Back to web services. There is some debate over exactly what is meant by this term. I understand it as the web minus the HTML presentation layer. Or, in other words, web services return data in response to specific requests. Web sites, on the other hand, return web pages (formatted in HTML) in response to specific requests. So web services are a good way for computers (or computer programs, really) to talk to each other. A computer program wants data from external sources to be formatted in a rigorously standard way. That's what web services provide. People, on the other hand, want data formatted in a visually pleasing way. That's what web pages (try to) do.

So web services are just standards for communication. As I mentioned the other day, this is something people who build on line applications can get very excited about. Sure, I could always build a program that would connect to a web site, download a specific page, and then sift through the HTML to extract certain information. The problem is that if the web site changes the visual design of their page, it will probably break your program. The piece of data you want won't be in the same place any more. With web services the web site publishes a specification which details exactly how the information will be presented. This might mean a something very basic, like a comma seperated list (like: date,time,theatre,price) or some sophisticated XML schema. The key is just that the structure is agreed upon and doesn't change. This gives third party developers confidence to write software that uses that service. The confidence is that your program will continue to work in the future.

And this turns out to be a huge deal. It's very web like. It's about cooperation.

The recent flood of thinking and writing on this subject has been largely fueled by Google. They published what they are calling the Google Web API. Maybe you remember hearing this term API during the Microsoft trial. It's what some on the government side kept saying they wanted Microsoft to "open up." API stands for application programming interface. The agreed upon data structures that comprise web services are APIs. Web services are what happen when web sites publish APIs and developers build tools that use them. (Microsoft Window's has a set of APIs too. They detail how programs running on top of Windows can make calls to the system to take care of basic low level operations, and the responses a program should expect to get back from the system. Allegedly Microsoft does not reveal their entire API to outsiders, thus Microsoft's own programs - like Word, or Excel - have a huge advantage.)

The Google API is completely open. It allows other programs to query the google search engine. The API specifies how you should send your request (the actual structure of your request) and how the results will be sent back to you. Google is calling this a test. Anyone can use the API, but you have to sign up with them (for free,) you are limited to 1,000 queries a day, and you can't use it for commercial purposes. They can keep track of how many queries you use a day because part of the API specifies that each request must be sent with a unique ID you receive from google when you register.

This is really cool stuff. People like me get very excited when we suddenly gain lots of power for building things on line. I can now write a program that harnesses the amazing data set and algorithms of google. And I can do this in the background, without actually sending my users to google. By publishing their API google has effectively added all the capabilities of google to whatever programming langauage I am using. It almost seems like too much power. It's intoxicating. Still, I can't think of exactly what to build. There's no sense in just writing a front end for searching - google's web page is already perfectly fast and minimal. But there is undoubtedly more that can be done. And lots of people are having a really good time trying to figure this out.

If it works, the web of the future will be largely about web services. And this means that the web will be more and more about assembling the information you view as a user from a variety of different sources which are all live and machine accessible over the internet. Or, in other words, it's about all of us agreeing on the sturcture of the language we're going to use for our programs to talk and work with one another. And agreeing to work together makes us all more powerful. Lots more on this topic to come...
- jim 5-04-2002 10:48 pm




add a comment to this page:

Your post will be captioned "posted by anonymous,"
or you may enter a guest username below:


Line breaks work. HTML tags will be stripped.