(ODBC). This allowed any client that could speak ODBC to access any
database server that could speak ODBC.
N OT E
David Wheeler, a chief architect for the EDSAC project in the early
1950s, said, Any problem in computer science can be solved with another layer
of indirection. Wise words! And written back at the origins of computer
This worked for a while, and newer layers of indirection were developed,
such as OLEDB and JDBC. But while this approach proved very successful,
it served a limited audience. Providing these useful indirection layers took
considerable industry support. This meant that as software developers
working within a single organization, we had difficulty creating servers
that could easily interoperate with numerous, diverse clients. If we wanted
to create some code with functionality that could be invoked by another
machine, we were in for a difficult time. A few technologies evolved to
assist developers, including DCOM from Microsoft, CORBA from the
Object Management Group, and, later, RMI from Sun Microsystems.
These new technologies were fairly good . . . as long as you were com-
municating with other systems using the same platformand even that
could be rough. How many of you tried to make DCOM talk to CORBA?
How about making CORBA talk to DCOM? Or DCOM talk to RMI? And
how many of you tried to make CORBA talk to CORBA? Yep, even that
could be hard. No matter how you sliced it, getting a Microsoft Windows
machine to talk to a Unix machine in any meaningful way was a headache.
Thus, the introduction of XML Web services. Like the technologies
before it, XML Web services are a layer of indirection. This time, however,
the method of invoking functionality on another machine is done through
plain text using standard W3C protocols. In one significant way, this is a
step backwardbinary protocols can be much faster than an XML Web
service. This disadvantage, though, is more than made up for by the ease
with which different platforms can communicate with one another.
This benefit is simple to demonstrate using Visual Studio .NET. You can
create a project that references code running on a Linux machine in some
guys garage in Peoria in just a few steps. Literally in minutes, you can cre-
ate a meaningful application that is actively running code and receiving
data on a machine running an entirely different operating system.
Now that youve seen what XML Web services can do, how do you use
them? In reality, Web services are nothing more than code running on
someones platform that has an entry point allowing you to activate that
code using a special XML document. In the most common case, youre