Simple Collaboration - Service Oriented Computing

[] Overview
[] Routing Protocols and Knowledge Management
[] High Level Communication Constructs
[] Simple Collaboration - Service-oriented Computing
[] Advanced Collaboration - Workflow Management



Proxy-based Service Oriented Computing for MANETs

In traditional service-oriented computing, a client searches a centralized service directory, retrieves an address at which the service can be accessed, and then invokes it using that address information. In the proxy-based approach, a proxy object is returned rather than the address. This object is then installed on the client which then interacts with the service via the proxy. This means that the client can interact with a remote service by making local method calls on the proxy and having the communication between the client and service completely abstracted away. This is useful in a MANET which requires complex communication protocols to deal with the network dynamism. In addition, protocols can be swapped seamlessly without affecting the application.

In addition to the use of proxies, the nature of the service directory is also changes, since centralized structures in MANETs create a single point of failure (e.g., if the host with the directory left the MANET, the whole system would be paralyzed). Hence, the service directory is distributed across multiple hosts. Each host has a local directory with the list of services it offers. Hosts within communication range transiently share their local directories to form a federated service directory. Hosts can access the contents of its own directory and the directories of any other connected hosts at the time of the directory lookup. This is shown in Figure 1.

This middleware was developed by me as an undergraduate student in collaboration with Radu Handorean, at that time a graduate student in the lab.

Figure 1: Proxy-based Service-Oriented Computing Middleware for MANETs

Code Management and Code Upgrade

I built enhancements to the basic model to support automated code management and code upgrade for both services and their clients. The code management module performs automatic analysis of the proxy code and fetches dependencies automatically from a federated structure similar to the service directory. This allows on-demand fetching of code which ensures that unnecessary code is not shipped to a client. The code upgrade module supports hot-swapping of proxy and service code. On the proxy, the wrapper pattern is used to create a bespoke synchronization wrapper around the proxy. Then, using the interceptor pattern, calls to the service are temporarily held while the swap of code is performed and then released after the swap is complete. A similar mechanism is used on the service side except that both old and new versions run side by side until a termination detection protocol determines that all proxies designed for use with the old version have been upgraded to use the new version.



Logical Mobility of Services

In MANETs, rigidity is undesirable as it causes brittleness in the application or middleware. By strongly associating a client or service with a particular host, we create a situation where we require a particular host pair to stay within communication range for the duration of the client-service interaction. This is often not practical as hosts can move out of range of each other of their own volition without any heed to the requirements of the client-service interaction.

My work seeks to eliminate this rigidity by making services logically mobile so that they can hop from one host to another to stay within communication range of the client. To enable this, I developed a pause-transfer-resume protocol where the execution of the service is temporarily suspended, transferred to another host and then resumed at the point where it left off. Figure 2 below shows a sample execution where three separate hosts are used for a single client-service interaction. This work won the best student paper award at SCC 2005.

Figure 2: A Context-aware Session Involving Three Volunteer Hosts and a Client

Related Publications

Radu Handorean, Rohan Sen, Gregory Hackmann, and Gruia-Catalin Roman, “Supporting Predictable Service Provision in MANETs via Context-Aware Session Management,” In: Journal of Web Services Research, 3(3), pp. 1-26, July-September 2006
[PDF]
Radu Handorean, Rohan Sen, Gregory Hackmann, and Gruia-Catalin Roman, “Context-Aware Session Management for Services in Ad Hoc Networks,” In: Proceedings of the 2005 Intl. Conf. on Services Computing, pp. 113-120, July 2005 (best student paper)
[PDF]
Rohan Sen, Radu Handorean, Gregory Hackmann, and Gruia-Catalin Roman, “An Architecture Supporting Run-Time Upgrade of Proxy-Based Services in Ad Hoc Networks,” In: Proceedings of the 2004 Pervasive Computing Conference, pp. 689-696, June 2004
[PDF]
Radu Handorean, Rohan Sen, Gregory Hackmann, and Gruia-Catalin Roman, Automated Code Management for Service-Oriented Computing in Ad hoc Networks ,”Washington University Technical Report WU-CSE-2004-17
[PDF]