REMOTE PROCEDURE CALL TRANSLATION
BACKGROUND
1. Field of Invention
This invention pertains to translation between data structures operative on differing but communicating computerized platforms.
2. Related Art and Other Considerations
Many computerized products actually require several computers or computer systems to accomplish specified functions. The constituent computer systems of such a product are typically each considered to be a "platform", and are connected by a physical communications link such as a cable. Each platform executes software in the form of sets of instructions coded in accordance with a particular software or programming language.
The platforms are typically configured for differing purposes. For example, software executed by one platform may comprise hardware "drivers" for controlling actual hardware equipment, while the software executed by another platform may be managerial or administrative. An example is a telecommunications access product, in which one platform controls a piece of telecommunications hardware while another platform performs administrative or supervisory functions.
In some situations the software or programming language for one platform is more "high level" than the programming language for the other platform. By "high level" is meant that the programming language is more sophisticated, more complex, or more specialized than the programming language of the other platform. Typically each platform has one or more data structures in its programming language. Despite the differing levels of language, the two platforms must nevertheless communicate, e.g., data from the differing data structures must be passed back and forth between the platforms. Typically there is a predetermined protocol involved as an interface between e.g., the data structures of the two platforms.
One context requiring translation is required when one platforms accesses a different-level data structure running on another platform by use of a remote procedure call, known as an "RPC", to a remote procedure service. Remote procedure calls are described, for example, in U.S. Patent 5,568,723; U.S. Patent 5,515,508; and U.S. Patent 5,307,490, all of which are incorporated herein by reference. In such context, remote procedure call (RPC) libraries can be employed for translation. These RPC libraries use standard functions to pack and unpack simple data types into/ from the protocol. Unfortunately, such PRC libraries are typically accessible only when using more common programming languages, and are often not as available for less frequently utilized programming languages. For the less common programming languages, the cost of developing a PRC library can be quite high.
Another approach for translation using remote procedure calls (RPCs) is preparation of a proprietary object which interfaces with the remote procedure service and which provides packaging and unpackaging services. Implementation of such an approach also has considerable cost.
What is needed, therefore, and an object of the present invention, is a simple and flexible translation between data structures used in languages of differing levels.
SUMMARY
A remote procedure call (RPC) client operates on a first level language platform and forwards a request for a RPC service to a second level language platform. The RPC client includes a RPC service table having a plurality of keys stored therein as well as translation description memory having a plurality of translation descriptions. When an applications program on the first level language platform requests an RPC service of the second level language platform, a main interface process of the RPC client obtains an appropriate one of the keys from the RPC service table and uses the appropriate one of the keys to select an appropriate one of the plurality of translation descriptions. A translation engine uses the appropriate one of the plurality of translation descriptions to prepare a protocol formatted message for forwarding to the second level language platform. The protocol formatted message includes the appropriate one of the keys. A response from the RPC service of the second level language platform also includes a key which is used by the RPC client to translate the response back to the first
level language.
BRIEF DESCRIPTION OF THE DRAWINGS
The foregoing and other objects, features, and advantages of the invention will be apparent from the following more particular description of preferred embodiments as illustrated in the accompanying drawings in which reference characters refer to the same parts throughout the various views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention.
Fig. 1 is a schematic view of two differing computerized platforms, one of the platforms including a PRC server and the other of the platforms including a RPC client.
Fig. 2 is a schematic view of an embodiment of the RPC client of Fig. 1.
DETAILED DESCRIPTION OF THE DRAWINGS
In the following description, for purposes of explanation and not limitation, specific details are set forth such as particular architectures, interfaces, techniques, etc. in order to provide a thorough understanding of the present invention. However, it will be apparent to those skilled in the art that the present invention may be practiced in other embodiments that depart from these specific details. In other instances, detailed descriptions of well known devices, circuits, and methods are omitted so as not to obscure the
description of the present invention with unnecessary detail.
Fig. 1 shows two computerized platforms, particularly platform B and platform A. Platform B, known as the lower level language platform, has a RPC server 20 and a plurality of RPC services 22A - 22N. Platform A, known as the higher level language platform, has a RPC client 30 and a plurality of applications 32A - 32C (three such applications being shown as an example) . RPC server 20 and RPC client 30 are connected by communications link 40 for which there is a protocol P for translation between platform A and platform B. Between RPC client 30 and applications 32A - 32C is an RPC service interface 42.
An example of the lower level language executing on platform B can be an imperative language such as the "C" programming language, while a higher level language such as Prolog, Lisp, or variants thereof may be executing on platform A. PRC server 20 of platform B is included in software executing on platform B. PRC server 20 dispatches RPC requests received from platform A to different ones of the PRC services 22.
PRC client 30 of the present invention performs a simple and flexible translation of the higher level language data structures employed on platform A towards protocol P. In addition, PRC client 30 provides a transparent interface to other applications executing on platform A.
Fig. 2 shows PRC client 30 as including main interface process 50; translation description memory 51; RPC service table 52; translation engine 54; an add/remove/lookup service
56; and, communication interface 58. Communication interface 58 is connected to communications link 40.
RPC service table 52 is stored in a memory (e.g., RAM) and has, at corresponding addresses, a plurality of RPC items represented by items 60A - 60K. Each item has as one of its fields an RPC service identifier as a key, e.g., keys 62A - 62K being shown in Fig. 2.
In accordance with the present invention, one of the applications 32 running on platform A, known as the calling application, requests one of the RPC services 22 executing on platform B. The request, in the form of a remote procedure call, can include procedure arguments, e.g., parameters to be passed to the RPC service 22 for utilization thereby in performance of the PRC service. The request by the calling application 32 is made over interface 42 to main interface process 50 of platform A.
Dependent on which of the particular applications 32 is the calling application, and the nature of the request (e.g., the particular RPC service to be performed) , main interface process 50 uses add/remove/lookup service 56 to consult RPC service table 52 in order to locate an appropriate one of the items 60 in RPC service table 52 for the RPC service request. Once the appropriate item 60 is located in RPC service table 52, a key 62 is extracted therefrom. The extracted key 62 is then given to main interface process 50, which retrieves a translation description based on this key from translation description memory 51. Typically, translation description memory has a different translation description for each key.
In essence, each translation description includes instructions or criteria for enabling a translation from the higher level language of platform A to protocol P.
Upon retrieval of the translation description from memory 51, the translation description and arguments for the PRC service are sent by main interface process 50 to translation engine 54. Translation engine 54 uses the translation description and RPC arguments of the higher level language of platform A to prepare a protocol P-formatted message. The key 62 is also included in the protocol P-formatted message. The protocol P-formatted message is applied via communications interface 58 to link 40 for transmission to RPC server 20 of platform B.
At platform B, the protocol P-formatted message is processed, interpreted by RPC server 20, and forwarded to a particular one of the RPC services in accordance with the request from the calling applications program 32. The particular RPC service which was invoked by the calling applications program prepares a response which is forwarded in a protocol P- formatted response message over link 40 to platform A. The forwarded response also includes a key 62, which in some cases can be the same key which was transmitted from platform A to platform B in connection with the RPC service request.
The protocol P-formatted response message received on link 40 is received at communication interface 58 where it is processed and forwarded to main interface process 50. At main interface process 50, the key 62 included in the response message is extracted. Based on the extracted key
62, a suitable translation description is obtained from translation description memory 51. The translation description and the P-formatted response message are then forwarded to translation engine 54 for translation back to the higher level language data structure utilized by the calling application. After preparation of the translation in the higher level language, the translated response is sent by main interface process 50 to the calling application 32, i.e., the application that requested the RPC service.
RPC service table 52 is dynamically configurable so that new items can be added, old items removed, or existing items retrieved and/or modified, e.g., in accordance with the particular services 22 provided on platform B. Add/remove/lookup service 56 facilitates these operations, and communicates over interface 42 with the applications programs 32.
The present invention provides a cost effective implementation of RPC service where different platforms pose translation problems for the communication protocol. The present invention is particularly suitable for higher level language implementations and provides straightforward translations of symbols, lists, and complex data structures.
While the invention has been particularly shown and described with reference to the preferred embodiments thereof, it will be understood by those skilled in the art that various alterations in form and detail may be made therein without departing from the spirit and scope of the invention. The embodiments of the invention in which an exclusive
property or privilege is claimed are defined as follows: