The deployment and management of differing versions of software components
can be simplified. External interfaces of the component can remain
constant in behavior while the internal logic, and possibly internal
storage, can change between versions. Such a version management system
can be transparent to the client programs, since interfaces can remain
backwards compatible between component versions. This transparency can
greatly reduce the risks of unpredictable behavior or system failure. A
system can maintain each version of a software component, and can use a
dispatch technique to determine and instantiate the currently active
version whenever a client requests a service from the software component
during a session. Old instances, possibly of other versions, can be
maintained as long as required on the server. Such systems can apply to
stateful and stateless components, using synchronous or asynchronous
communications, and which may communicate over networks and may use web
services type protocols. This description is not intended to be a
complete description of, or limit the scope of, the invention. Other
features, aspects, and objects of the invention can be obtained from a
review of the specification, the figures, and the claims.