Comunicação entre processos entre aplicativo C ++ e Java App em ambiente Windows OS

StackOverflow https://stackoverflow.com/questions/1209406

  •  06-07-2019
  •  | 
  •  

Pergunta

Nós temos uma aplicação C ++ no Windows que inicia um processo de java. Esses dois aplicativos precisam se comunicar uns com os outros (via trechos de XML).

O método de comunicação entre você escolheria e por quê?

Métodos sobre a mesa para nós são: um arquivo compartilhado (s), tubos e tomadas (embora eu acho que isso tem algumas preocupações de segurança). Estou aberto a outros métodos.

Foi útil?

Solução

Eu não sei por que você acha que a comunicação baseada em soquete teria preocupações de segurança (uso de SSL). Muitas vezes, é uma boa abordagem, pois é linguagem agnóstico , supondo que você tem um protocolo de comunicação bem definido. Dê uma olhada no Google do buffers de protocolo , por exemplo -, eles geram as classes e fluxos Java necessários

.

Na minha experiência, os sistemas de arquivos (especialmente sistemas de arquivos de rede) não são bem adequados para essa comunicação, pois não são necessariamente ligado para mensagens problemas de cache (que eu vi resultar em arquivos sendo não pegou -se pelo processo de destino, por exemplo).

Outra opção é um mensagens camada ( AMQ ou Tibco por exemplo) embora isso provavelmente envolverá uma maior sobrecarga administrativa (mais experiência) para configurar.

Pessoalmente eu gostaria de optar por uma abordagem puro-socket devido à sua flexibilidade e simplicidade. Você será no controle completo .

Outras dicas

Eu usei pipes nomeados para comunicação entre C # e um c aplicativo de plataforma cruzada ++ e não tinha nada, mas bons resultados. Exceto que soquetes é definitivamente o caminho a percorrer.

Sockets são agradáveis. Eles dão-lhe a capacidade de facilmente criar uma caixa preta testar camada em torno de cada componente, bem como executar cada componente em sua própria máquina.

A segurança é definitivamente uma preocupação, mas há uma boa variedade de opções, dependendo de como é importante. Você pode usar SSL, handshaking costume, protegidos por senha logins e firewalls para ajudar a proteger-lo.

Edit: Não é algo que eu recomendo, mas também é compartilhada memória usando JNI. Só pensei que eu iria falar dele porque ele não está em sua lista.

Ice é muito legal:)

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