Pergunta

Gostaria de adicionar um método à interface CORBA do meu servidor existente.Isso exigirá a recompilação de todos os clientes?

Estou usando TAO.

Foi útil?

Solução

A recompilação de clientes não é necessária (e não deveria ser, independentemente do ORB que você utiliza).Como Adam indicou, as pesquisas são feitas pelo nome da operação (uma comparação de texto simples).

Fiz o que você está descrevendo com nosso sistema baseado em ACE/TAO e não encontrei problemas (os servidores estavam em ACE/TAO C++, os clientes eram ACE/TAO C++, C# usando Janeva da Borland e OmniORBPy).

Outras dicas

Supondo que os clientes e servidores estejam se comunicando via IIOP, nenhuma recompilação será necessária.Uma mensagem IIOP contém o nome da interface, o nome do método e os parâmetros.Se nenhuma dessas coisas mudou, então tudo deverá permanecer compatível.Adicionar outro método à interface não alterará nenhuma das coisas existentes.

Por outro lado, se seus objetos estiverem usando um protocolo diferente ou se os clientes estiverem em processo com o servidor e, portanto, ignorando o IIOP, talvez seja necessário garantir que tudo seja recompilado.

As operações (métodos) são consultadas por nome, portanto você só precisa recompilar os clientes que utilizam a nova operação.

Clientes que usam colocation (ou seja,executando dentro do mesmo processo com colocation habilitado no ORB) deve ser recompilado.Os clientes remotos podem permanecer os mesmos - como dito anteriormente, os métodos são correspondidos por nome simbólico.

Depende do uso do novo método IDL.Se a invocação do Corba for estática (SII), o que significa que seu cliente está vinculado ao stub, você deverá recompilar um stub se quiser usar sua nova interface de método adicionada.

Se a invocação do corba for dinâmica (DII), não será necessário nenhum stub para o cliente.Nenhuma recompilação é necessária.Neste caso, o código do seu cliente deve ser assim:

     remoteObjRef->invoke("methodname", args); // send("methodname", args)

Fiz a invocação do CORBA DII há quatro anos e funciona com o cliente TAO e o serviço TAO/Jacorb/IONA corba.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top