Browse Prior Art Database

Evolving Client/Server Interfaces

IP.com Disclosure Number: IPCOM000123672D
Original Publication Date: 1999-Mar-01
Included in the Prior Art Database: 2005-Apr-05
Document File: 2 page(s) / 71K

Publishing Venue

IBM

Related People

Borman, S: AUTHOR [+2]

Abstract

In a client/server situation there will exist intefaces that the client can use to communicate with the server. When this interface needs to be evolved (add a new function for example) it can cause communication problems between the client and server. An old client communicating with a new server must continue to work in the same way it used to. A new client communicating with an old server must recognise that the new functions are not supported on the old server. In addition it is possible for a client to communicate with more than one server, some of which may have new interfaces, and some of which may have old interfaces. When using RMI and Java any change to the client/server interface invalidates the interface.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 52% of the total text.

Evolving Client/Server Interfaces

   In a client/server situation there will exist intefaces
that the client can use to communicate with the server.  When this
interface needs to be evolved (add a new function for example) it can
cause communication problems between the client and server.  An old
client communicating with a new server must continue to work in the
same way it used to.  A new client communicating with an old server
must recognise that the new functions are not supported on the old
server.  In addition it is possible for a client to communicate with
more than one server, some of which may have new interfaces, and some
of which may have old interfaces.  When using RMI and Java any change
to the client/server interface invalidates the interface.  This
means that if a change is made both the client and server must
change to the new level of software at the same time.  This is not
practical nor desirable when multiple servers and clients are
involved in many different locations around the world.

   What is required is a method of evolving interfaces
without the need to upgrade the entire system at the same time, and
allowing old clients to continue to work with new servers, and new
clients to know they are in communication with an old server.

   Therefore, in the first release of a product the following
method is added to the server:
           java.rmi.Remote [  ]  getInterfaces()

   This method will return a null in the first release as all
interfaces are contained in the implementation of the original
interface.

   When a new release requires additions to the interface a
new interface and implementation will be defined.  The original
implementation can be changed to load the new implementation,
without breaking the original interface.  Th...