Communication entre deux applications
Bonjour,
Je vous expose un problème relatif au projet XDev. Il concerne la communication entre les deux applications (le débogueur (XDDebugger) et l'application maà®tre (XDev)). XDDebugger exécute l'application construite tandis que XDev affiche l'éditeur de débogage (piles des appels, variables ainsi que le code où à lieu l'arrêt). J'ai utilisé les DO pour la communication entre XDDebugger et XDev car je doit récupérer l'ensemble du contexte du runtime. Dans ce cas, je n'ai pas le choix et celà fonctionne bien.
Mon interrogation concerne la liaison inverse. J'ai d'abord utiliser un thread pour scruter l'état de XDDebugger au niveau de XDev. Je sais que cette approche est l'une des plus mauvaises. Il s'agit d'attente active. Au lieu d'employer les DOs que me proposez-vous comme solution alternative ?
Merci de votre aide.
Je vous expose un problème relatif au projet XDev. Il concerne la communication entre les deux applications (le débogueur (XDDebugger) et l'application maà®tre (XDev)). XDDebugger exécute l'application construite tandis que XDev affiche l'éditeur de débogage (piles des appels, variables ainsi que le code où à lieu l'arrêt). J'ai utilisé les DO pour la communication entre XDDebugger et XDev car je doit récupérer l'ensemble du contexte du runtime. Dans ce cas, je n'ai pas le choix et celà fonctionne bien.
Mon interrogation concerne la liaison inverse. J'ai d'abord utiliser un thread pour scruter l'état de XDDebugger au niveau de XDev. Je sais que cette approche est l'une des plus mauvaises. Il s'agit d'attente active. Au lieu d'employer les DOs que me proposez-vous comme solution alternative ?
Merci de votre aide.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- les signaux,
- les apple events.
Tous 2 nécessitent l'installation d'un handler dans l'application qui va recevoir. Il n'y a donc pas de polling (ce que tu nommes attente active), puisque la fonction enregistrée auprès du handler ne sera exécuté que sur réception du signal ou de l'AE.
Sinon, d'autres moyens de communication inter-process :
- La mémoire partagée
- Un fichier mappé (la solution la plus intéressante car permet de conserver l'état pour comprendre des choses en cas de crash)
- Un pipe nommé
:P Je pense que ça peut t'interresser, même si ça ne te donne pas directement la solution.
Très bien. Les Apple Events ont toujours été pour moi obscurs. C'est toujours très utile de disposer de plusieurs solutions car celà permet de choisir celle la plus appropriée.
Par ailleurs, j'ai trouvé deux applis "PictureSharing" et "PictureSharingBrowser" qui exploitent les classes NSNetService, NSFileHandle ainsi que sockets BSD, pour ne citer que celles-là .
Je vais les étudier car je pense qu'elles réalisent la fonctionalité que je recherche.
La communication entre applications se fait plutôt soit par les signaux ou les pipes, ou les AppleEvents, ou les NSDistributedNotificationCenters... ce genre de truc.
Ou encore Cocoa Distributed Objects
Merci Ali.