2012-01-23 21 views
5

Ho 2 servizi Windows che ho creato utilizzando C#.Come comunicare tra i servizi Windows

Vorrei che uno dei servizi richiamasse una funzione nel secondo servizio di Windows.

Come devo fare?

EDIT:

il problema è che devo applicazione che in esecuzione (non ho bisogno di loro di essere piuttosto Process servizio è buono), ma ho bisogno di questo 2 applicazione di comunicare, questo 2 applicazione sono sullo stesso server,

+0

Vedere [post correlati] (http://stackoverflow.com/a/86286/175679) per comunicazioni cross-app. – SliverNinja

+1

Quale tipo di dati? Quanti messaggi? Qual è la dimensione media dei messaggi? – sll

risposta

3

Sicuro. Ci sono un sacco di meccanismi IPC che puoi usare. Servizi remoti, ascoltatori TCP/HTTP, ecc.

Il servizio fornisce funzionalità che potrebbero essere utili al di fuori dell'altro servizio?

Vedi questa discussione per ulteriori idee: IPC Mechanisms in C# - Usage and Best Practices

EDIT: Come Davide Piras ha sottolineato, se WCF è disponibile per l'uso, allora considerare l'utilizzo di esso. Semplificherebbe la vita. I file di configurazione WCF a volte sono difficili da maneggiare, ma c'è anche uno strumento utile: http://msdn.microsoft.com/en-us/library/ms732009.aspx

+2

Ogniqualvolta sia possibile il remoting e HTTP dovrebbero essere evitati a favore di WCF –

2

I servizi sono nella stessa casella? Hai .NET 4? Consigliamo vivamente di utilizzare la modalità più veloce possibile, memory-mapped files.

Se sono nella stessa casella, ma non si dispone di .NET 4 o di una rete Microsoft Windows omogenea, named pipes potrebbe funzionare. Più precisamente, userei WCF over a named pipe.

4

Ho trovato tutte le altre risposte corrette ma un po 'troppo complicate (WCF è un grosso problema) e non scalabili (la memoria e le named pipe funzionano solo sullo stesso server). Ti suggerisco il sistema di messaggistica DotNetMQ. È facile da usare e distribuire e comunichiamo anche tra processi in esecuzione su server diversi.

Problemi correlati