6
votes

Communication interprocesses entre l'application C ++ et Java App dans Windows OS Environnement

Nous avons une application C ++ sur Windows qui démarre un processus Java. Ces deux applications doivent communiquer entre elles (via des extraits de XML).

Quelle méthode de communication interprocession choisiriez-vous et pourquoi?

Les méthodes sur la table pour nous sont: un (s) fichier (s) partagé (s), des tuyaux et des sockets (bien que je pense que cela a des problèmes de sécurité). Je suis ouvert à d'autres méthodes.


0 commentaires

4 Réponses :


9
votes

Je ne sais pas pourquoi vous pensez que la communication basée sur la prise aurait des problèmes de sécurité (utilisez SSL). C'est souvent une très bonne approche car elle est langue agnostique , en supposant que vous disposez d'un protocole de communication bien défini. Regardez sur Google tampons de protocole , Par exemple, ils génèrent les classes et les flux de Java requis.

Dans mon expérience, les systèmes de fichiers (en particulier les systèmes de fichiers réseau) ne sont pas bien adaptés à une telle communication car elles ne sont pas nécessairement adaptées à la messagerie (j'ai vu des problèmes de mise en cache entraîner des fichiers non choisis par exemple par le processus cible par exemple).

Une autre option est une autre couche de messagerie ( AMQ ou tibco par exemple) bien que Cela impliquera probablement une plus grande surcharge administrative (plus une expertise) à mettre en place.

Personnellement, je choisirais une approche de socket pure en raison de sa flexibilité et de sa simplicité. Vous serez en contrôle total .


0 commentaires

1
votes

ICE est assez cool :)


0 commentaires

3
votes

J'ai utilisé des tuyaux nommés pour la communication entre C # et une application C ++ croisée croisée et n'avait que de bons résultats. Sauf que les prises sont définitivement la voie à suivre.


0 commentaires

2
votes

Les prises sont agréables. Ils vous permettent de créer très facilement une couche de test Blackbox autour de chaque composant, ainsi que de courir chaque composant sur sa propre machine.

La sécurité est définitivement une préoccupation, mais il existe une bonne gamme d'options en fonction de l'importance de son importance. Vous pouvez utiliser SSL, Panneau de main sur mesure, des connexions et des pare-feu protégés par mot de passe pour l'aider à le sécuriser.

EDIT: Je ne recommanderais pas quelque chose, mais il y a aussi une mémoire partagée à l'aide de JNI. Je pensais juste que je le mentionnerais parce que ce n'est pas sur votre liste.


0 commentaires