Dynamic Web Service Selection

Web Services are software systems that expose their functionality through a well-defined, web-based interface. The main difference between normal Remote Procedure Call and Web Services is that Web Services can be easily be consumed without prior communication. The interface is made publicly available (in WSDL) and the messages have a standardized format (SOAP). This allows third-parties to consume the Web Service without any contract. This property also introduces certain issues. In a distributed system and especially on the Web, documents and services can continuously appear, change, move and disappear. An application using a Web Service may be short-lived. We can not recover from a broken Web Service, but what we could do is switch to another Web Service providing the same functionality.

An important reason to invoke a Web Service is that the client wants to achieve a task that can not be done locally, such as gathering certain real-world data. Usually this task is done by many different providers. As providers may discontinue or change their services and as Web Services may not always be available we would want to be able to switch to another Web Service (provider) at run-time (dynamically). This is a fairly straightforward operation when assuming the alternative web serivces share the same interface. In practice this is simply not the case because providers have no incentive to do so. They would be making it easier to switch to competitors and they can't implement additional features that would not fit the interface.

Our approach to this is to define an interface for an abstract service (a task) that can be mapped to multiple web services using XSLT. A local server implements the task as an actual service and maps it to a web service at run-time according to some selection policy. The mappings and interfaces can be distributed through UDDI.

Dynamic Web Service Selection Proxy

To do dynamic selection of Web Services we have built a specialized proxy server in Java. All information can be found in the package.

Files