A Web Services Primer

by Venu Vasudevan
April 04, 2001

Introduction

Looking back over the last six years, it is hard to imagine networked computing without the Web. The reason why the Web succeeded where earlier hypertext schemes failed can be traced to a couple of basic factors: simplicity and ubiquity. From a service provider's (e.g. an e-shop) point of view, if they can set up a web site they can join the global community. From a client's point of view, if you can type, you can access services. From a service API point of view, the majority of the web's work is done by 3 methods (GET, POST, and PUT) and a simple markup language. The web services movement is about the fact that the advantages of the Web as a platform apply not only to information but to services.

By "services", I don't mean monolithic coarse-grained services like Amazon.com, but, rather, component services that others might use to build bigger services. Microsoft's Passport, for instance, offers an authentication function exported on the Web. So hypothetically, an electronic newspaper like the Washington Post can avoid creating its own user authentication service, delegating it to Passport.

Oracle's dynamic services whitepaper  provides other examples of component services that are reusable building blocks: currency conversion, language translation, shipping, and claims processing,  A more formal definition of a web service may be borrowed from IBM's tutorial on the topic.

Web services are a new breed of Web application. They are self-contained, self-describing, modular applications that can be published, located, and invoked across the Web. Web services perform functions, which can be anything from simple requests to complicated business processes...Once a Web service is deployed, other applications (and other Web services) can discover and invoke the deployed service.

IBM's web services tutorial goes on to say that the notion of a web service would have been too inefficient to be interesting a few years ago. But the trends like cheaper bandwidth and storage, more dynamic content, the pervasiveness and diversity of computing devices with different access platforms make the need for a glue more important, while at the same time making the costs (bandwidth and storage) less objectionable.

Table of Contents

The Web Services Platform
SOAP
UDDI
XLANG
XAML
XKMS
XFS

Why bother with the Web, you say, when I've got my favorite middleware platform (RMI, Jini, CORBA, DCOM etc.)? While middleware platforms provide great implementation vehicles for services, none of them is a clear winner. The strengths of the Web as an information distributor, namely simplicity of access and ubiquity, are important in resolving the fragmented middleware world where interoperability is hard to come by.  The Web complements these platforms by providing a uniform and widely accessible interface and access glue over services that are more efficiently implemented in a traditional middleware platform.

Viewed from an n-tier application architecture perspective, the web service is a veneer for programmatic access to a service which is then implemented by other kinds of middleware. Access consists of service-agnostic request handling (a listener) and a facade that exposes the operations supported by the business logic. The logic itself is implemented by a traditional middleware platform.


Generic Web Service Architecture

The Web Services Platform

So what is the web service platform? The basic platform is XML plus HTTP. HTTP is a ubiquitous protocol, running practically everywhere on the Internet. XML provides a metalanguage in which you can write specialized languages to express complex interactions between clients and services or between components of a composite service. Behind the facade of a web server, the XML message gets converted to a middleware request and the results converted back to XML.

Wait a minute, you say, access and invocation are only the bare bones (this would be like saying CORBA is only IDL plus remote procedure calls). Life is never quite that simple. What about the platform support services -- discovery, transactions, security, authentication and so on -- the usual raft of services that make a platform a platform? That's where you step up to the next level.

The Web needs to be augmented with a few other platform services, which maintain the ubiquity and simplicity of the Web, to constitute a more functional platform. The full-function web services platform can be thought of as XML plus HTTP plus SOAP plus WSDL plus UDDI. At higher levels, one might also add technologies such as XAML, XLANG, XKMS, and XFS -- services that are not universally accepted as mandatory.

Below is a brief description of the platform elements. It should be noted that while vendors try to present the emergent web services platform as coherent, it's really a series of in-development technologies. Often at the higher levels there are, and may remain, multiple approaches to the same problem.

SOAP

SOAP is a protocol specification that defines a uniform way of passing XML-encoded data. In also defines a way to perform remote procedure calls (RPCs) using HTTP as the underlying communication protocol.

SOAP arises from the realization that no matter how nifty the current middleware offerings are, they need a WAN wrapper. Architecturally, sending messages as plain XML has advantages in terms of ensuring interoperability (and debugging, as I can well attest). The middleware players seem willing to put up with the costs of parsing and serializing XML in order to scale their approach to wider networks.

Submitted in 2000 to the W3C as a Note by IBM, Microsoft, UserLand, and DevelopMentor, the further development of SOAP is now in the care of the W3C's XML Protocols Working Group. This effectively means that SOAP is frozen and stable until such time as the W3C Working Group delivers a specification.

See also Don Box's Brief History of SOAP.

UDDI (Universal Description, Discovery and Integration Service)

UDDI provides a mechanism for clients to dynamically find other web services. Using a UDDI interface, businesses can dynamically connect to services provided by external business partners. A UDDI registry is similar to a CORBA trader, or it can be thought of as a DNS service for business applications. A UDDI registry has two kinds of clients: businesses that want to publish a service (and its usage interfaces), and clients who want to obtain services of a certain kind and bind programmatically to them. The table below is an overview of what UDDI provides. UDDI is layered over SOAP and assumes that requests and responses are UDDI objects sent around as SOAP messages. A sample query is included below.
 

Information Operations Detailed information (supported by lower-level API)
White pages: Information such as the name, address, telephone number, and other contact information of a given business Publish: How the provider of a Web service registers itself.  Business information: Contained in a BusinessEntity object, which in turn contains information about services, categories, contacts, URLs, and other things necessary to interact with a given business.
Yellow pages: Information that categorizes businesses. This is based on existing (non-electronic) standards Find: How an application finds a particular Web service. Service information: Describes a group of Web services. These are contained in a BusinessService object
Green pages: Technical information about the Web services provided by a given business. Bind: How an application connects to, and interacts with, a Web service after it's been found Binding information: The technical details necessary to invoke a Web service. This includes URLs, information about method names, argument types, and so on. The BindingTemplate object represents this data. 

Service Specification Detail: This is metadata about the various specifications implemented by a given Web service. These are called tModels in the UDDI specification

There is no near-term plan in UDDI to support full-featured discovery (e.g. geography-limited searches or bidding and contract negotiation supported by vendors like eLance). UDDI expects to be the basis for higher level services supported by some other standard. There are plans for UDDI to support more complex business logic, including support for hierarchical business organizations. UDDI has fairly broad support; IBM, Ariba, and Microsoft are driving it. It's not yet an open standard.

UDDI Example

Query: The following query, when placed inside the body of the SOAP envelope, returns details on Microsoft.

<find_business generic="1.0" xmlns="urn:uddi-org:api">
       <name>Microsoft</name>
</find_business>

Result: detailed listing of <businessInfo> elements currently registered for Microsoft, which includes information about the UDDI service itself.

 <businessList generic="1.0"
  operator="Microsoft Corporation"
  truncated="false"
  xmlns="urn:uddi-org:api">
  <businessInfos>
   <businessInfo
       businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3">
    <name>Microsoft Corporation</name>
     <description xml:lang="en">
            Empowering people through great software -
            any time, any place and on any device is Microsoft's 
            vision. As the worldwide leader in software for personal
            and business computing, we strive to produce innovative 
            products and services that meet our customer's
     </description>
      <serviceInfos>
       <serviceInfo
          businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"                    
          serviceKey="1FFE1F71-2AF3-45FB-B788-09AF7FF151A4">
        <name>Web services for smart searching</name>
       </serviceInfo>
      <serviceInfo
          businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
          serviceKey="8BF2F51F-8ED4-43FE-B665-38D8205D1333">
        <name>Electronic Business Integration Services</name>
      </serviceInfo>
      <serviceInfo
          businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
          serviceKey="611C5867-384E-4FFD-B49C-28F93A7B4F9B">             
	    <name>Volume Licensing Select Program</name>          
      </serviceInfo>
	  <serviceInfo
          businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
          serviceKey="A8E4999A-21A3-47FA-802E-EE50A88B266F">
	    <name>UDDI Web Sites</name>
      </serviceInfo>        
      </serviceInfos>
    </businessInfo>
  </businessInfos>
 </businessList>

Pages: 1, 2, 3

Next Page