What would happen if Microsoft, IBM, and Sun could all agree on something for a change? Well, they have. The Unholy Trinity of Computing has suddenly allied, at least in terms of its latest ambition: All three are ganging up on poor customers with one thought in mind: Sell them Web services.
I am not sure when it last happened that the industry's leading lights all came to the same conclusion at once--especially when it wasn't in response to some clear customer demand--but it's happened with Web services.
Companies that try to sell you something you didn't know you needed are usually just engaging in some wishful thinking. But Web services may prove the exception. That's because they build on things we already know--such as the Internet and component-based programming--to solve some real-world problems and create new opportunities.
The how and why
Here's the problem: How do you allow applications to talk to one another across the Internet?
Why do you want to do this? Perhaps so that an application at your company that needs to know the current price of a particular component could ask a supplier's computer to provide the information in real time.
Or maybe you're a car rental firm that would like to allow all airlines to access your reservation system. Or you're a Web site owner who would like to allow all cellular telephones and wireless PDAs to download your content, never mind that the devices are entirely different.
Today, all those problems would be solved on a case-by-case basis. The way in which you exchanged and used data might vary for every supplier, every individual airline, and every individual type of cell phone or wireless device. Because of the complexity involved, most of these problems go unsolved, leaving some tremendous efficiencies untapped.
As a solution to this problem, Web services establish a method of standardizing communication, making it easier for applications and devices to share information back and forth across the Internet.
Here's a very simple example of a Web service, one I've actually created at a Microsoft-sponsored Web services workshop.
What we wanted to do was take some numbers entered on a Windows computer and have them added up and totaled by another computer, which would then send us back the result. We used a Linux computer, located out on the Internet, to do the addition for us.
First, we created a simple Windows application that allowed us to input the numbers we wanted to add, and formatted them so the Linux program--the Web service--could understand and process them. The client then knew how to display the Linux-generated result.
So we pressed a button, and the numbers to be added together were sent to the Linux computer, where our newly created Web service added them up and then sent the total back to the Windows machine, which knew how to display the total. This all worked because a number of established standards tell these computers how to talk to one another.
Because it was sitting on the Internet, the Linux machine could have offered this same Web service to any client computer--or even another computer program--that needed our addition service. Apply this functionality to something more important than simple mathematics, and it becomes very powerful.
Web services are to computer programming what the Web was to information access: A common way of doing things that provides a framework for complex tasks. As the Web solved problems related to finding and displaying information--thanks to the lingua franca of HTML--Web services, to admittedly oversimplify it, allow applications to advertise and do what they do for anyone who can reach them via the Internet.
This kind of application sharing isn't new, or not exactly. A service called time sharing, where companies would literally rent computing time on a mainframe, was once a very big business. It's also one that's enjoyed something of a reincarnation with the advent of ASPs, or application service providers.
With a Web service, by contrast, you're not sharing a single application as much as having two or more applications communicate and work cooperatively over the Net. Web services may even involve only component parts of applications.
The enabling technology is why they are known as Web services. The way applications talk to one another is to use the same HTTP protocol that the Web already uses. This means applications will talk to one another in something that looks like the HTML programming language used to create Web pages. The lingua franca of Web services is called XML.
One problem with writing about Web services is that the topic becomes very complex very quickly. Think about everything that's necessary for you to read this page: I need to know how to write and also know a language you understand. I also need a way to tell you this information is available to you.
Then I need a way to transmit the information, and you need a way to access and display the information at your end. And, of course, you must be able to read what appears on your screen.
In practice, this happens fairly simply, but only because a tremendous number of standards already exist. Web services use some standards that already exist, a bunch that half exist, and still more that are yet to be created. So when you see semi-familiar and unfamiliar terms and acronyms like UDDI, XML, SOAP, and the rest of the Web services lexicon, don't feel stupid.
Despite the alphabet stew here, it's important. Reason: This is what the historians and futurists call an "inflection point," which is to say a moment when something important happens to change things.
Web services may change how applications work and are developed as dramatically as the Web has changed how we access and share information, and even conduct some of our business and shopping.
For further proof of this, stay tuned. On Wednesday, Bill Gates will be here in San Francisco introducing the newest version of his company's flagship development tool, Visual Studio.Net, which is intended to help developers build these Web services.
I'll be tuning in to see what Bill has to say--and then I'll be back with more on a technology with so much apparent potential that it has brought the biggest companies in computing into a rare alignment.