UDDI (Universal Description, Discovery and Integration) is a protocol for finding Web Services in directories. It was developed by IBM, Microsoft and Ariba. Writing in XML.com, Yasser Shohoud puts this in context:
As more businesses expose their business functions as Web services, you will need a way to find those businesses and the services they expose. For example, your company may want to use the Web to purchase office supplies electronically. To do this, you need a directory of businesses that you can use to search for all companies that sell office supplies. Once you find the list of companies, you need to find out what Web services each company provides.
An HP white paper on UDDI:
UDDI is a specification that defines a service registry of available Web services, serving as a global electronic yellow pages. UDDI enables a company to publish a description of available services to the registry, announcing itself as a service provider. Service users can send requests conforming to the UDDI schema as SOAP messages to the service registry to discover a provider for services.
WSDL (Web Services Description Language) helps in describing the Web Services interfaces and functions. Thus, companies can use WSDL to gives details of services which would be listed in the UDDI directories. Like UDDI, it too was developed by IBM, Microsoft and Ariba. The specification elaborates on WSDL:
WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services). WSDL is extensible to allow description of endpoints and their messages regardless of what message formats or network protocols are used to communicate.
How does all this fit together? Here is an example (from an IBM white paper) which provides an excerpt from a WSDL document that is part of the definition of a Stock Quote Web Service. It defines (in XML) a method called getQuote, with the associated SOAP information that enables a piece of code to find the service, invoke a method, and process the response.
< binding name="StockQuoteServiceBinding" type="StockQuoteServiceType" >
< soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/ >
< operation name="getQuote" >
< soap:operation soapAction="http://www.getquote.com/GetQuote"/ >
< input >
< soap:body type="InMessageRequest" namespace="urn:live-stock-quotes" encoding="http://schemas.xmlsoap.org/soap/encoding/"/ >
< /input >
< output >
< soap:body type="OutMessageResponse" encoding="http://schemas.xmlsoap.org/ soap/encoding/"/ >
< /output >
< /operation >
< /binding >
It may be somewhat hard to read (and understand), but fragments like these are going to be the building blocks of tomorrow’s software.