Communication interprocessus entre l'application C ++ et l'application Java dans un environnement Windows OS

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

  •  06-07-2019
  •  | 
  •  

Question

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

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

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

Était-ce utile?

La solution

Je ne suis pas sûr de savoir pourquoi vous pensez que la communication par socket pose des problèmes de sécurité (utilisez SSL) C’est souvent une très bonne approche car elle est indépendante du langage , en supposant que vous disposiez d’un protocole de communication bien défini. Consultez les tampons de protocole de Google, par exemple, ils génèrent les classes et les flux Java requis.

D'après mon expérience, les systèmes de fichiers (en particulier les systèmes de fichiers réseau) ne conviennent pas à une telle communication car ils ne sont pas nécessairement adaptés à la messagerie (j'ai constaté que des problèmes de mise en cache entraînaient la non prise des fichiers par le processus cible par exemple).

Une autre option est une couche messagerie ( AMQ ou Tibco, par exemple) bien que cela impliquera probablement une charge administrative plus importante (plus une expertise) à mettre en place.

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

Autres conseils

J'ai utilisé des canaux nommés pour la communication entre C # et une application multiplate-forme c ++ et je n'ai obtenu que de bons résultats. Sauf que des prises est définitivement la voie à suivre.

Les sockets sont sympas. Ils vous permettent de créer très facilement une couche de test de boîte noire autour de chaque composant, ainsi que d’exécuter chaque composant sur sa propre machine.

La sécurité est certes une préoccupation, mais il existe une bonne gamme d’options en fonction de son importance. Vous pouvez utiliser SSL, le protocole de transfert personnalisé, les connexions et les pare-feu protégés par mot de passe pour sécuriser le site.

Modifier: Ce n'est pas quelque chose que je recommanderais, mais JNI utilise également la mémoire partagée. Je pensais juste que je le mentionnerais parce que ce n'est pas sur votre liste.

Ice est plutôt cool:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top