Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# IPC avec XPCOM ?

Envoyé par : pataguillon

Date : 18/04/2006 09:44

Bonjour,

j'aimerais créer un bus de communication permettant à des processus distincts de s'échanger des données.

Je pensais le faire à l'aide d'XPCOM, mais j'ai l'impression que cette technologie ne permet de faire communiquer uniquement les objets d'une même application entre eux (bus de communication interne à l'application alors que mes objets à moi ne seront pas tous regroupé dans une application)...me trompe-je ?

Merci d'avance pour vos réponses.

# Re: IPC avec XPCOM ?

Envoyé par : laurentj

Date : 18/04/2006 10:22

Bonjour,

il faut que tu tapes plus bas que xpcom, en l'occurence dans l'API de NSPR. Regarde si dans les fonctions de thread il y a ce que tu veux.

# Re: IPC avec XPCOM ?

Envoyé par : pataguillon

Date : 18/04/2006 15:47

Donc vous confirmez qu'avec XPCOM on ne peut pas faire communiquer deux processus comme le permet COM ?

# Re: IPC avec XPCOM ?

Envoyé par : laurentj

Date : 18/04/2006 16:11

c'est pas COM ou XPCOM qui le permet. À ce que je sais, les fonctions système de gestion/communication de thread/processus ne sont pas encapsulé dans des COM/XPCOM, car ce sont justement ... des fonctions système. (d'ailleurs, j'ai du mal à voir en quoi cela a un rapport avec COM ou XPCOM). Sachant que dans Mozilla, l'API qui permet d'accéder au système, c'est NSPR (qui est une couche abstraite au dessus de l'API native du système d'exploitation).

Je n'ai pas regardé NSPR en détails, donc je ne sais pas si on peut faire communiquer une appli mozilla avec une appli non mozilla via les processus. Cependant, il semble il y avoir ce qu'il faut dans NSPR : utilisation de pipe, de semaphore, de mémoire partagée etc (lire le lien que j'ai donné...). À vous d'appeler ensuite ces fonctions dans un composant XPCom C++... Donc je ne confirme rien du tout à ce niveau là, je n'ai jamais eu l'occasion de faire ce que vous voulez faire. Au pire, vous pouvez appeler les vrais fonctions système de l'OS pour faire ce que vous voulez, mais bien sûr, vous perdez tout le bénéfice de la portabilité.

En tout cas, ce qui est sûr (et fort heureusement), c'est que l'on peut créer des threads (donc processus internes à l'appli), et les faire communiquer entre eux. Il y a même de quoi rendre totalement transparent la gestion des locks lors des accés aux composants XPCOM, via un système de Proxy (donc accéder à un composant XPCOM instancié dans un thread voisin, de façon naturelle).

# Re: IPC avec XPCOM ?

Envoyé par : pataguillon

Date : 18/04/2006 17:46

Et bien merci pour ces renseignements.

Pour tout t'expliquer, je voyais XPCOM comme un genre de bus ou de base qui se trouvait sous les objets ou processus, et qui permettait de faire transiter les données/appels entre eux...mais apparemment je me trompais...

Sachant que mon application ne sera pas sous Mozilla du tout, je ne vais pas du tout m'en sortir avec ça, si je comprend bien.

# Re: IPC avec XPCOM ?

Envoyé par : laurentj

Date : 18/04/2006 18:00

En fait (ça me revient :-) , je crois que vous confondez COM et DCOM (si mes vieux souvenirs de programmations windows sont toujours bon). XPCOM, c'est l'équivalent de COM, pas de DCOM. Et ce que vous voulez, c'est faire l'équivalent de DCOM (ou de Corba aussi sur d'autres systèmes..). En clair, vous voulez invoquer des composants "distants", qu'ils soient sur un réseau ou dans une autre application.

Donc effectivement, ce n'est pas possible avec XPCOM.

# Re: IPC avec XPCOM ?

Envoyé par : laurentj

Date : 18/04/2006 18:25

Cependant, rien n'est impossible, il semble que certains s'y sont essayé : http://www.lysator.liu.se/~gargamel/exjo(..)

# Re: IPC avec XPCOM ?

Envoyé par : pataguillon

Date : 19/04/2006 08:57

Non, je connais la différence entre COM et DCOM, et je n'ai pas forcément besoin de pouvoir faire des communications entre processus distants...à priori, tous mes processus seront sur la même machine, et je souhaite juste les faire communiquer entre eux.

Actuellement, je peux le faire avec COM, mais cela n'est pas portable du tout, donc je souhaite remplacer COM par une autre techno, et je trouvais XPCOM intéressant. Mais apparemment, j'ai fait fausse route...

Merci pour vos réponses, en tous cas.

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.