Remote API Version Compatibility via Handshake Protocol
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Current remote or remoting method invocations, such as RMI and web services, face challenges in ensuring versioning compatibility between client and server applications, leading to difficulties in communication when using different application versions.
Innovation Solution
A method and apparatus are introduced to provide version compatibility by exchanging version information between remoting clients and servers, using a single API for network-based invocations, and employing wire versioning to ensure backward compatibility, allowing clients and servers to adjust their versions for seamless communication.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If a single API is used for network-based invocations, then ease of operation is improved, but version compatibility between different application versions deteriorates
Solution Approach 1:
The protocol is segmented into multiple version-specific implementations (JRMP, IIOP, HTTP) that can be selected based on the application version. Each version has its own protocol handler, allowing the system to maintain a single unified API while internally routing to version-appropriate protocol implementations, thus resolving the contradiction between ease of operation and version compatibility.
2Reliability
If version information is exchanged between client and server, then version compatibility is improved, but device complexity increases
Solution Approach 1:
Version information is exchanged during the connection establishment phase, before any actual remote method invocations occur. The client and server perform a version handshake that determines the appropriate protocol version to use for subsequent communications. This preliminary action ensures version compatibility without adding complexity to the core invocation mechanism.
Data Source
AI summary
A remoting client and a remoting server are described. In one embodiment, the remoting client has a client remote access application, a client invoker, a marshaller, and an unmarhaller. The client remote access application provides a version indicator of the client remote access application and receives a version indicator of a server remote access application. The client invoker generates an invocation request including the version indicator of the client remote access application. The client remote access application determines a compatible version between the client remote access application and the server remote access application based on the version indicator of the client remote access application and the version indicator of the server remote access application.


