Question

Il y a deux semaines, j'avais besoin d'un moyen de communiquer un service wcf avec un service Windows exécuté sur le même ordinateur. Le service Windows devait extraire des données d'une source externe et les partager avec le service wcf (hébergé dans IIS), qui devait les transmettre lorsqu'un client faisait une demande. J'ai choisi de le faire avec ipc.

Je l'ai fait et maintenant le service Windows est le serveur ipc et le service wcf est le client ipc. Cela va bien, mais je pense que j'ai commis une erreur en faisant cela car pour que tout fonctionne correctement, le service Windows doit être exécuté avec le compte ASPNET. Pour cela, le compte de mot de passe ASPNET doit être attribué. Lorsque je le fais, l'IIS ne fonctionne pas correctement. .

Je pense à différentes alternatives, mais le problème persiste dans chacune d’elles. Quelques idées?

Modifier:

Il me fallait un système qui rendait public, dans un service Web hébergé dans IIS, les données obtenues via telnet à partir d'un autre ancien système, ce qui est un peu instable. Comme la réponse de ce second système a été lente, j'ai choisi de mettre un processus (le service Windows) entre le service Web et l'ancien système. Le service Windows devait sauvegarder les données collectées à partir de l'ancien système et lorsque le service wcf le lui demandait, tout donner en une seule fois via ipc.

Était-ce utile?

La solution

Pourquoi ne pas simplement créer un autre compte avec le même jeu d'autorisations de l'utilisateur ASPNET sous lequel le service WCF et votre autre service sont exécutés? De cette façon, vous avez le contrôle sur le mot de passe.

Autres conseils

Pourquoi le service Windows doit-il s'exécuter en tant qu'utilisateur ASPNET? Est-ce parce que vous utilisez une connexion IPC qui requiert une authentification de l'appelant?

Une autre alternative (si vous avez le contrôle sur le code du service windows) serait de faire de ce service un service WCF (en utilisant un ServiceHost dans le service Windows). Le service IIS peut se connecter au service Windows à l'aide d'une liaison NetTcp ou NetNamedPipe si vous avez besoin de performances similaires à IPC.

Idéalement, le service Windows devrait être exécuté en tant que service WCF, afin que le client puisse plus facilement communiquer avec lui.

La question suivante concerne le temps que le "client" doit être un service WCF. Si ce client doit servir d'autres applications, c'est approprié, sinon cela risque de ne pas être nécessaire. Je n'en sais pas assez sur votre système, alors c'est à vous de décider du meilleur!

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