Still with web services , and now let’s talk about Discovery of services.
Discovery, as in the 2nd D in UDDI (Universal Description, Discovery and Integration) and not the Discovery channel, though the latter is probably so much more entertaining.
1> UDDI is the abbreviated form of Universal Description, Discovery and Integration though a lot of people also refer to it as Universal Dynamic Discovery and Invocation , which to my mind , seems a better disambiguation of the abbreviation.
UDDI is basically a directory of services offered by various service providers or organizations. UDDI can be of 2 kinds, public and private. The public UDDI directories list services by organizations, and there are various classifications of the organizations, that could be used to identify an appropriate service based on business type.
The private UDDI registries are usually internal to a large organization, or could be B2B or industry registries. These are usually private and are not accessible to all.
The idea behind having UDDI registries is that systems that use these registries could be self-organizing i.e they discover services as they are added and can thus add to their capabilities. This is kind of a precursor to a Semantic Web, though it is not quite the same.That is, if a new business entity added a similar service to the one you were currently using , your system would discover this service and add it to its list of alternate services that it could use. It could thus create B2B partnerships on the fly. Now this could still happen based on some criteria but in actuality, when other organizations use services provided by service providers, a contract and a SLA (Service Level Agreement) is to be first agreed upon before the services are used. You would not trust your critical system with a service that could be proved unreliable.
Also, your system rather than create dynamic relationships with all services that provide the functionality needed would rather have 2 or 3 preferred providers which would be used either in a round-robin manner or in some priority order. These would be based either on metered usage or an agreement as to the no. of transactions to be used per month.
Also, there are issues of tracking usage , which needs the service user to first be authenticated and then authorised to use the service.
Though these could be automated , there are practical considerations that still require human judgment to be exercised.
One of the major criteria for choosing a service provider would be cost, but it is not the sole criteria. Quality of service (QOS) is another major criteria.
UDDI is a centralised way of accessing web services; your system accesses the registry , looks up the required organization/industry and chooses the service it requires. This is a one-time process; the WSDL document for the service is located; the service is bound to and cached by your system so that the computational and network cost of accessing the registry is not incurred again. In most cases, you might even bypass the UDDI as you might already be provided the WSDL location by the service provider.
Though UDDI is supported by IBM, IBM also supports an alternate standard for discovering web services, which seems much simpler and is , in the bargain, a distributed system.
2> WSIL (Web Services Inspection Language)
Web Services Inspection Language (WSIL) is a service discovery mechanism that is an alternative to UDDI as well as complementary to UDDI. With WSIL, you go directly to the source of the service i.e. the service provider itself , a sort of , getting it directly from the horse’s mouth.
Let me draw an analogy here. How many of you are familiar with RSS (Really Simple Syndication)? If you are a blog writer or reader, you will be familiar with the RSS button on the index page. You just point an RSS reader to it and voila!, you are now subscribed to any new articles or posts on the blog or web-site.
WSIL operates in a similar manner. It requires that the root of the web-site have a meta-tag that has a pointer or link to a WSIL document that describes a list of services provided by the service provider , in this case, the web-site.
Why is it complementary? It is much easier to update a document provided on your web-site with the list of all the service available for consumption than to update an UDDI registry. The UDDI registry can then be populated automatically using a search and identify WSIL documents program. There would be some lag in synchronicity but life gets much simpler. Simplicity is key.
In both of the above discovery mechanisms, the WSDL documents are not stored ; just a reference to them.
References: Wikipedia, http://publib.boulder.ibm.com/infocenter/radhelp/ (search for WSIL)
J2EE™ Web Services
Note: WSIL is a standard proposed by Microsoft and IBM.
Addendum: Microsoft also offers a proprietary discovery mechanism called DISCO that follows a very similar approach to WSIL. See http://msdn.microsoft.com/en-us/magazine/cc302073.aspx