Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Communication interprocess d'un Web Service dans IIS

2 réponses
Avatar
AlanG
Bonjour.

Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit
communiquer avec un programme Win 32 tournant sur la même machine. Nous avons
donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32.
La DLL win32 communique avec le programme Win 32 par 2 méthodes :
postmessage et un fichier mappé mémoire.
Le web service quant à lui fait appel à une fonction de la DLL win32 qui se
charge de réaliser l'ensemble du traitement. Cela marche très bien sous
VS2005 lorsque le service web est réalisé à partir de fichier. Par contre
l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess
ne passe ( ni postmessage ni l'accès au fichier mappé mémoire).
Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et
sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le
Web service et le programme Win32 ?

Merci d'avance pour vos réponses

2 réponses

Avatar
Nicolas Diétrich
Bonjour

Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à
l'identité du process IIS en jeu.

Que te rend l'accès à ton memory mapped file? Un access denied?

Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors?
IIS6? Quelle est l'identité de ton application pool? Network service? Fais
déjà un test avec un utilisateur plus privilégié que Network Service voir si
cela fonctionne.

--
Nicolas Diétrich
Developer Support Escalation Engineer
Microsoft France


"AlanG" a écrit :

Bonjour.

Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit
communiquer avec un programme Win 32 tournant sur la même machine. Nous avons
donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32.
La DLL win32 communique avec le programme Win 32 par 2 méthodes :
postmessage et un fichier mappé mémoire.
Le web service quant à lui fait appel à une fonction de la DLL win32 qui se
charge de réaliser l'ensemble du traitement. Cela marche très bien sous
VS2005 lorsque le service web est réalisé à partir de fichier. Par contre
l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess
ne passe ( ni postmessage ni l'accès au fichier mappé mémoire).
Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et
sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le
Web service et le programme Win32 ?

Merci d'avance pour vos réponses



Avatar
AlanG
Bonjour

Tout d'abord merci pour ta réponse.

Ce mécanisme avait été pensé tout simplement par l'existence de la DLL win32
et du programme Win 32 qui communiquent comme cela. J'avais simplement pensé
que d'appeler la DLL par le web service m'eviterait de redevelopper le
traitement qu'elle réalise.

Quand je lance le service Web , qu'il instancie la DLL , qui elle même créé
la mémory mapped file tout va bien. Maintenant si je lance le programme Win
32 qui va ouvrir le memory mapped file j'obtiens effectivement un access
denied.
Par contre je ne comprend pas pourquoi les message postmessages ne passent
pas.
J'ai bien entendu effectué des tests avec une application qui monte la DLL
en remplacement du service web et dans ce cas tout va bien.

Pour le moment je tourne sur la machine de dev et c'est un IIS 5
Oui Network service.
Je vais faire un test avec un autre compte.

Si tu penses qu'il y a une meilleure méthode de communication IPC je suis
preneur car pour le moment il n'y a que du maquettage de réalisé, alors il
est encore temps de prendre une meilleure direction.

Bye

"Nicolas Diétrich" a écrit :

Bonjour

Ton mécanisme d'IPC est discutable, mais ton problème est surement lié à
l'identité du process IIS en jeu.

Que te rend l'accès à ton memory mapped file? Un access denied?

Ton webservice tourne sur IIS5? Quelle isolation est utilisée alors?
IIS6? Quelle est l'identité de ton application pool? Network service? Fais
déjà un test avec un utilisateur plus privilégié que Network Service voir si
cela fonctionne.

--
Nicolas Diétrich
Developer Support Escalation Engineer
Microsoft France


"AlanG" a écrit :

> Bonjour.
>
> Nous avons developpé, avec VS2005, un web service qui pour ses besoins doit
> communiquer avec un programme Win 32 tournant sur la même machine. Nous avons
> donc 3 éléments : 1 Web service , 1 Dll Win32 , 1 programme Win32.
> La DLL win32 communique avec le programme Win 32 par 2 méthodes :
> postmessage et un fichier mappé mémoire.
> Le web service quant à lui fait appel à une fonction de la DLL win32 qui se
> charge de réaliser l'ensemble du traitement. Cela marche très bien sous
> VS2005 lorsque le service web est réalisé à partir de fichier. Par contre
> l'implantation dans IIS ne fonctionne pas. Aucune communication interprocess
> ne passe ( ni postmessage ni l'accès au fichier mappé mémoire).
> Ne connaissant pas IIS j'aimerai savoir si la méthode utilisée est valide et
> sinon quelle autre méthode peut-on utiliser pour pouvoir dialoguer entre le
> Web service et le programme Win32 ?
>
> Merci d'avance pour vos réponses
>