Web services represent a new paradigm in application architecture and development. The importance of Web services is not that they are new, but that this new technology addresses the needs of application development. To understand this new paradigm, let us first look at the application paradigm that preceded Web services Web applications.
The Evolution of Web Applications
Web applications are applications that are available via the World Wide Web (Web) and allow any user anywhere in the world access to its capabilities. This is in contrast to older client-server applications in which only dedicated clients could access the applications residing on the server. Web applications grew the user base from just a few hundred client machines accessing a client-server application, to millions of users across the Web accessing a Web application.
The Web opened up the floodgates to Web applications by allowing users to simply specify a URL within a Web browser. Web applications also increased the difficulty of developing applications because a Web application client (a PC browser) has no knowledge of the application's communication requirements or underlying systems. Industry standard technologies such as HTTP and HTML were used to bridge this gap between Web application clients and the Web applications themselves. Application servers and other middleware emerged to reduce the complexities of building Web apps while still allowing pervasive access to each Web application.
Web services build on and extend the Web application model. Web applications allow any Web browser to access its functionality, with the application user interface presented through the browser. Web services take this a step further and allow any client application to access and use its capabilities.
A Web application allows universal user access to its capabilities by supporting industry standard interfaces to its user interface. They do not allow extending or adding to their capabilities through programmatic access. To leverage the functionality of a Web application and build on it, complex and often unreliable techniques, such as screen scraping, must be used. Web services address this issue by allowing programmatic access to the Web services' capabilities using industry standard interfaces and protocols. The evolution of Web applications to Web services is shown in Figure 1-5.
Figure 1-5. Evolution of Web applications to Web services and key architectural differences.
Web services advocate a services-oriented architecture for applications in which a software component provides its functionality as a service that can be leveraged by other software components. Such a service model abstracts away many complex issues that arise from software component integration, including platform compatibility, testing, and maintenance.
Since Web service clients do not have information necessary to communicate with a Web service, a set of standards is necessary to allow any-to-any communications. Web service standards build on previous standards for communications and data representation, such as HTTP and HTML.
The key enabler for Web services is XML. Although HTML and XML are similar in that both are human-readable markup languages, HTML is for presentation markup while XML is for semantic markup. This critical attribute of XML supports expressing application and functional semantics in a platform-independent manner that enables any-to-any information exchange.
Some argue that Web services are nothing new; they are simply the latest incarnation of distributed computing. In some sense that may be true, but what is it about Web services that is driving the incredible buzz? Why are entrepreneurs, CEOs of established companies, and industry analysts excited about this technology? In the next section, we see that Web services are not just another distributed computing platform.
Not Just Another Distributed Computing Platform
Web services are indeed a technology for distributed computing and there is one critical distinction between Web services and distributed computing technologies that have come before. A person who implements a Web service can be almost one hundred percent certain that anybody else can communicate with and use the service. The breakthrough of Web services is precisely the anybody-to-anybody communications that it enables. The confidence level Web services engender in its developers is similar to that of HTML Web pages. The developer of an HTML page is certain that anybody with a browser can view the Web page.
Web services grew out of a need for a distributed computing application environment that was not as difficult to deploy to as the Common Object Request Broker Architecture (CORBA) or Microsoft's Distributed Component Object Model (DCOM), and also offered greater interoperability. Both CORBA and DCOM aimed to provide a distributed computing environment across heterogeneous environments. Unfortunately, neither supported environments or technologies that were sufficiently far-reaching to enable heterogeneous communications at the anybody-to-anybody scale.
In a sense, Web services sacrifice the richness of capabilities that are provided by previous distributed computing environments, which are necessary to a small group of all applications, for a much simpler and more ubiquitous solution that is applicable for the vast majority of applications. This is not to say that Web services place restrictions on their use. Additional capabilities can be layered on top of the Web services platform to address varying needs.
Applications that are exposed as Web services have a large base of other applications (that are also exposed as Web services) with which to communicate. Since they are based on simple and open industry standards (or de facto standards), Web services make significant inroads toward ubiquitous interoperability. Interoperability here is on the scale of the Web or the Internet, not just a group or organization.
Based on industry standards and supporting anybody-to-anybody interoperability, Web services are poised to be the platform that delivers on the needs of e-businesses. All companies interact with other companies in the course of conducting their businesses. Manufacturing companies interact with component suppliers, distributors interact with manufacturing companies, retailers interact with distributors, and so on. Initially, these interactions were manual, conducted by mail, phone, and fax.
Web applications allowed companies to interact with one another by exposing some of their capabilities and business processes to others on the Web. But, most of the time, this still required a human being interacting with the Web application on the other side. Web services remove the need for constant human intervention while companies interact by enabling programmatic conversations between applications.
By removing this barrier to e-business interactions, Web services enable new business relationships as well as more fluid relationships that can be configured and reconfigured on-the-fly. Although Web services offer numerous benefits, they also present many challenges and risks within traditional enterprise environments. We discuss Web services and how they fit within enterprises next.