Pregunta

Hace dos semanas, necesitaba una forma de comunicar un servicio de wcf con un servicio de Windows que se ejecuta en la misma computadora. El servicio de Windows tenía que obtener datos de una fuente externa y compartirlos con el servicio wcf (alojado en IIS) que tenía que proporcionarlos cuando un cliente realizaba una solicitud. Elegí hacer eso con ipc.

Lo hice y ahora el servicio de Windows es el servidor ipc y el servicio wcf es el cliente ipc. Esto va bien, pero creo que cometí un error al hacerlo porque para que funcione correctamente, el servicio de Windows debe ejecutarse con la cuenta ASPNET, para esto se debe asignar la cuenta de contraseña ASPNET y, cuando hago eso, IIS no funciona correctamente. .

Estoy pensando en diferentes alternativas, pero en todas ellas el problema persiste. ¿Algunas ideas?


Editar:

Lo que necesitaba era un sistema que hiciera público, en un servicio web alojado en IIS, datos obtenidos a través de telnet de otro sistema antiguo, lo que es un poco inestable. Como la respuesta de este segundo sistema fue lenta, decidí poner un proceso (el servicio de Windows) entre el servicio web y el sistema antiguo. El servicio de Windows tuvo que guardar los datos recopilados del sistema anterior y, cuando el servicio wcf solicitó, lo dio todo de una vez a través de ipc.

¿Fue útil?

Solución

¿Por qué no solo crea otra cuenta con el mismo conjunto de permisos del usuario ASPNET con el que se ejecutan tanto el servicio WCF como su otro servicio? De esa manera, usted tiene control sobre la contraseña.

Otros consejos

¿Por qué es necesario que el servicio de Windows se ejecute como usuario de ASPNET? ¿Se debe a que está utilizando una conexión IPC que requiere la autenticación de la persona que llama?

Otra alternativa (si tiene control sobre el código del servicio de Windows) sería hacer que también sea un servicio WCF (utilizando un ServiceHost en el servicio de Windows). El servicio IIS podría conectarse al servicio de Windows mediante un enlace NetTcp o NetNamedPipe si necesita un rendimiento similar al IPC.

Idealmente, el servicio de Windows debería ejecutarse como un servicio WCF, de esta manera es fácil para el cliente comunicarse con él.

La siguiente pregunta es si el "cliente" debe ser un servicio WCF. Si este cliente necesita servir otras aplicaciones, entonces es apropiado, de lo contrario puede no ser necesario. No sé lo suficiente acerca de su sistema, por lo que depende de usted decidir qué es lo mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top