The Evolution of Web Services
Web services is one of the most exciting new developments in the field of computer science, and also one of the most misunderstood. Some people describe it as a technology designed strictly for publishing software services to the Internet, whereas others think of it as a general-purpose architecture that will trigger a fundamental shift in the way that all distributed systems are created. As you'll see shortly, I definitely believe the latter.
This chapter provides an introduction to web services that shows it is not a fad but a natural and logical evolution of distributed computing. It covers all of the important terms such as SOAP, WSDL, and UDDI, as well as touching upon common questions related to performance and reliability.
The chapter ends with a fun story that strongly influenced my interest in distributed computing and offers a glimpse of where web services might lead.
GLUE, my company's web services platform, is used for the first few chapters of this book because it is easy to learn, installs without hassle, and is free for most commercial uses. Later in the book I introduce some examples that use Microsoft .NET and J2EE, and show how these systems can interoperate using SOAP.
If you want to follow along with the examples, now is a good time to read the appendix section titled "Installing GLUE and the Examples."
What is a Web Service?
A software service is something that accepts digital requests and returns digital responses. Using this definition, a C function, a Java object, and a Structure Query Language (SQL)-stored procedure are all examples of software services; a computer application can be thought of as a well-orchestrated set of services.
Until now, a specific software service could only be used within a particular language or platform, and was often not accessible across a network. Web services are a new breed of software component that is language, platform, and location independent. They are Extensible Markup Language (XML)-based building blocks for the next generation of applications whose parts can reside in a single machine or span the globe.
The term web service is unfortunately a bit misleading, because many people think that it means a service specialized for use across the World Wide Web. This leads to opinions like "web services will fail because there won't be enough demand for subscriptions to Internet software services." In fact, the term is an abbrevation for Web of Services, meaning that distributed applications will be assembled from a web of software services in the same way that web sites are assembled from a web of HTML pages. If there's one thing that I hope to convince you of, it's that a majority of distributed applications will be built out of web services, regardless of whether they are deployed to a single machine, a corporate intranet, or the Internet (see Figure 1.1).
FIGURE 1.1 In the future, distributed systems will be webs of services
There is much debate as to whether web services are an evolution or a revolution. My view on this issue was expressed in the title of a column I wrote for IBM developerWorks. The column was called "The Web Services (R)evo-lution" because I think that web services are both an evolution of distributed computing and the launch point for a revolution in the way we think about building large-scale systems. To fully appreciate the impact of web services, it's useful to study their ancestry.
Let's take a look at the evolution of software services.