A
Web Services Primer
by
Venu Vasudevan
April 04, 2001
Introduction
| Table
of Contents |
The
Web Services Platform
SOAP
UDDI
XLANG
XAML
XKMS
XFS
|
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.
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 (remote invocation)
UDDI (trader, directory service)
WSDL (expression of service characteristics)
XLANG/XAML (transactional support for complex web transactions
involving multiple web services)
XKMS (XML Key Management Specification) - ongoing work by Microsoft
and Verisign to support authentication and registration