The Road to Web Services
The notion of web services is a hot topic for information technologists today. Leading the charge are many large and small companies creating products in the area of web services and attempting to establish de facto web services standards. With so many players in the space it is essential that standards be created and then adopted, so that the vision of web services can become a reality.
We see web services as the application of web technologies, such as XML, HTTP, and MIME, to the concepts that are at the core of distributed computing technologies such as CORBA/DCOM, and Message-Oriented Middleware (MOM). The synergy created by these two sets of technologies has the potential to reshape how applications are built and how business is conducted, and allow for more diverse methods for accessing and manipulating information.
Before delving into the standards that are needed to enable web services, it is important to understand the history and motivations behind the web and distributed computing technologies.
Both the web technologies and the distributed computing technologies got their start in the early 90s, and both have had their share of success. The web technologies are primarily focused on delivering information from one user to another over the Internet. The information transmitted may be a MIME encoded email message containing an attached MS Word document, or an HTML document containing an invoice for a purchase. Distributed computing technologies, on the other hand, are focused on connecting computers, specifically applications running on those computers, so that they are able to exchange information or work together to accomplish a task that may not otherwise have been possible. Distributed computing technologies were designed for use within an enterprise but were not particularly designed for use over a wide-area network such as the Internet.
Because the two technologies have different purposes, they have evolved along different and somewhat divergent paths. The goal of web services standards should be to unite those divergent paths so they converge on a road to web services.
We now briefly outline what we believe are the most important features of web services for which standards must exist before the web services vision may be realized. For each feature, we briefly describe its relationship to existing web and distributed computing technologies and which ideas from those areas should be carried forward into web services.
Interoperability is the ability for two different implementations of web services to communicate with one another. Interoperability is perhaps the most critical feature of web services, for without it, communication is not possible. Interoperability requirements typically exist at all layers of the protocol stack from the communication protocol and data encoding used, to higher layer application semantics such as transaction and security contexts.
In the world of web technology interoperability is made possible via protocols such as HTTP, SMTP, and SSL, with support from encoding formats such as MIME. In the distributed computing world interoperability is often lacking due to the use of proprietary protocols, though some standards, such as IIOP, do exist.
The initial focus of web service standards should focus on two core aspects of interoperability: protocols and data encoding. These two aspects of interoperability form the foundation on which all other interoperability aspects may be built.
Currently, SOAP is the de facto standard web service protocol. The W3C is already working on standardizing the work begun with SOAP as part of the XML Protocol Activity, in particular the XML Protocol Working Group (XMLP WG). The XMLP WG should consider lessons learned in the distributed computing world while framing the new standard. In particular, protocol performance has been a critical issue for distributed computing resulting in protocols with a compact binary encoding, the ability to multiplex messages over a single communication channel, and the ability to keep long standing communication channels open. These needs are often at odds with the requirements of supporting such protocols over the Internet due to the complexities of firewalls, routing, and other issues found in a wide-area network setting. The complexities of using distributed computing protocols such as IIOP over the Internet has greatly hindered their adoption in that particular setting. The XMLP WG should attempt to find ways to support the design goals of distributed computing protocols while still supporting wide scale adoption over the Internet.
Currently, XML is the de facto standard encoding for web service data. We believe this should continue to be the case as it provides the maximum portability, expressiveness, and extensibility. When XML cannot be used to represent data, existing web standards such as MIME should be used. The XMLP WG should consider using these existing web technologies for the standard data encoding to support web services.
With interoperability, it is possible to communicate at the lowest layers of the protocol stack, but to be unable to accomplish anything meaningful at the higher layers of the stack, such as the application layer. For this, a standard for web service description must exist.
Service description facilities have long existed in the distributed computing world in the form of Interface Definition Languages (IDLs). IDLs define a type system of interfaces, operations on those interfaces, and data types used as parameters or return values for those operations. The web has had minimal service definition support through the use of URIs that describe the type of service and its location, but not necessarily the service’s semantics. This has been sufficient because humans are the typical end users of web technologies. It is easy for a human to use semantic clues to determine the meaning of various pieces of information scattered across an HTML page or in an email message.
Currently, WSDL is emerging as a de facto standard for web service description. We believe the W3C should create a new working group to undertake the standardization of web service description, using WSDL as a base. However, there are features found in various IDLs that are currently missing from WSDL. Any standards effort should consider the addition of the following features to those already embodied in WSDL:
Once a service has been described, the service must be located. This process is typically called discovery. Discovering services has long been a problem with distributed computing, and as such several mechanisms for locating services have been created. They can be as simple as exchanging files that allow one to find the service, looking up the service in a directory service by name, or looking up the service in a directory service by specific attributes or traits. Service discovery in the web world has been mostly done in an ad hoc fashion using search engines or similar technology.
For web services to be used there must be a mechanism by which the consumer of a web service can locate the web service’s description information. Today, UDDI is emerging as a standard for service discovery across the Internet. We believe there is a need for several methods of service discovery ranging from UDDI to simply sending a web service description file as an attachment in an email message. We believe the W3C should create a new working group to undertake the standardization of mechanisms to discover web services. Multiple non-conflicting mechanisms should be considered to support the discovery of services across the Internet, within the enterprise, or among known service partners.
When web services are used in a wide-area network setting, service reliability becomes a significant issue. Applications that rely on RPC style semantics become increasingly fragile due to the requirement of having all services up and running at the same time. Due to this, applications using web services over the Internet will typically need to make use of a reliable asynchronous messaging protocol rather than an RPC style protocol. This allows for the construction of loosely coupled applications that are more resilient to temporary failures of the individual services that compose the application.
We believe the W3C should expand the charter of the XMLP WG to include the definition of a reliable messaging infrastructure for XMLP. Such an infrastructure is necessary to enable wide scale deployment of web services over the Internet.
We have outlined several key features of web services that need to be standardized for the vision of web services to become a reality. The combination of these standards, together with adoption by a significant number of industry players, should allow us to begin our journey on the road to web services.