2012-01-23 22 views
5

Tengo 2 servicios de Windows que creé usando C#.Cómo comunicarse entre los servicios de Windows

Me gustaría que uno de los servicios llame a una función en el segundo servicio de Windows.

¿Cómo debo hacerlo?

EDIT:

La cuestión es que tengo a la aplicación que se ejecuta (yo no los necesito a ser bastante Proceso de servicio es bueno también) pero necesito esta aplicación para comunicarse 2, esta aplicación 2 están en el mismo servidor,

+0

Consulte [publicación relacionada] (http://stackoverflow.com/a/86286/175679) para la comunicación entre aplicaciones. – SliverNinja

+1

¿Qué tipo de datos? ¿Cuántos mensajes? ¿Cuál es el tamaño promedio del mensaje? – sll

Respuesta

3

Sure. Hay muchos mecanismos de IPC que podrías usar. Remoting, escuchas TCP/HTTP, etc.

¿Algún servicio proporciona funcionalidad que podría ser útil fuera del otro servicio?

ver este tema por más ideas: IPC Mechanisms in C# - Usage and Best Practices

EDIT: Como Davide Piras señaló, si WCF está disponible para su uso, y luego considerar el uso de la misma. Simplificará la vida. Los archivos de configuración de WCF a veces son difíciles de manejar, pero también hay una buena herramienta para eso: http://msdn.microsoft.com/en-us/library/ms732009.aspx

+2

Siempre que sea posible, debe evitarse la comunicación remota y HTTP a favor de WCF –

2

¿Los servicios están en la misma caja? ¿Tienes .NET 4? Recomiendo usar el modo más rápido posible, memory-mapped files.

Si están en la misma caja, pero no tiene .NET 4, o están en una red homogénea de Microsoft Windows, named pipes podría funcionar. Más al punto, usaría WCF over a named pipe.

4

Encontré todas las demás respuestas correctas, pero un poco demasiado complicadas (WCF es un gran problema) y no escalables (la memoria y las canalizaciones con nombre solo funcionarán en el mismo servidor). Te sugiero DotNetMQ sistema de mensajes. Es fácil de usar e implementar y te permite comunicarte incluso entre procesos que se ejecutan en diferentes servidores.

Cuestiones relacionadas