A system and method allow client applications to invoke remote procedures
on a server application using any of a plurality of remote procedure
mechanisms, by selecting a remote procedure call mechanism at runtime. The
system and method uses client and server stubs in the application that
include an mechanism-independent canonical specification of each procedure
interface. The specification defines the form of the interface and
arguments, but not does include conventional mechanism-specific
marshalling arguments for marshalling the arguments. The resulting
compiled stubs may be used with any remote procedure call engine. Such
remote procedure call engines receive the specification of the procedure
interface and the arguments passed by the client application to the
server, and determine at runtime the particular marshalling routines to
use, according to the canonical specification. This defers selection of
the marshalling routines, and hence allows a single compiled client
application binary code to be used with any of a variety of remote
procedure call engines and marshalling routines. Deferring selection of
marshalling routines further allows optimization of data types where the
client and server computers share architectural characteristics. The
system includes a interface definition language compiler that produces the
client and server stubs having the canonical specification of the
procedure interfaces, a virtual remote procedure library that selects a
remote procedure call engine for a client, and plurality of remote
procedure call engines.
Um sistema e um método permitem que as aplicações do cliente invoquem procedimentos remotos em uma aplicação do usuário usando algum de um plurality de mecanismos remotos do procedimento, selecionando um mecanismo do Remote Procedure Call no runtime. Os usos cliente do sistema e do método e topos do usuário na aplicação que incluem uma especificação canônica mecanismo-independente de cada relação do procedimento. A especificação define o formulário da relação e dos argumentos, mas para não fazer inclua argumentos marshalling mecanismo-específicos convencionais para marshalling os argumentos. Os topos compilados resultantes podem ser usados com todo o motor do Remote Procedure Call. Tais motores do Remote Procedure Call recebem a especificação da relação do procedimento e dos argumentos passados pela aplicação do cliente ao usuário, e determinam no runtime as rotinas marshalling particulares ao uso, de acordo com a especificação canônica. Isto adía a seleção das rotinas marshalling, e daqui permite que a uma única aplicação compilada do cliente o código binário seja usado com alguma de uma variedade dos motores do Remote Procedure Call e de rotinas marshalling. A seleção adiando de rotinas marshalling permite mais mais o optimization dos tipos de dados onde os computadores do cliente e de usuário compartilham de características architectural. O sistema inclui um compilador da língua da definição de relação que produza os topos do cliente e do usuário que têm a especificação canônica das relações do procedimento, de uma biblioteca de procedimento remota virtual que selecione um motor do Remote Procedure Call para um cliente, e do plurality dos motores do Remote Procedure Call.