2012-01-23 13 views
5

Mam 2 usługi systemu Windows, które utworzono przy użyciu C#.Jak komunikować się między usługami systemu Windows

Chciałbym, aby jedna z usług wywoływała funkcję w drugiej usłudze okien.

Jak mam to zrobić?

EDIT:

Problem jest, że mam do wniosku, że działa (nie muszę ich do procesu obsługi Raczej jest zbyt dobry), ale muszę ta aplikacja 2 do komunikowania się, z tej aplikacji 2 są na tym samym serwerze,

+0

Zobacz [powiązany wpis] (http://stackoverflow.com/a/86286/175679) do komunikacji między aplikacjami. – SliverNinja

+1

Jakie dane? Ile wiadomości? Jaki jest średni rozmiar wiadomości? – sll

Odpowiedz

3

Pewnie. Istnieje kilka mechanizmów IPC, z których możesz skorzystać. Remotowanie, słuchacze TCP/HTTP itp.

Czy któraś z usług zapewnia funkcje, które mogą być przydatne poza innymi usługami?

Zobacz ten wątek na więcej pomysłów: IPC Mechanisms in C# - Usage and Best Practices

EDIT: Jak Davide Piras wskazał, jeśli WCF jest dostępna do użycia, a następnie rozważyć użycie go. Uprości to życie. Pliki konfiguracyjne WCF są czasami trudne do opanowania, ale jest też na to dobre narzędzie: http://msdn.microsoft.com/en-us/library/ms732009.aspx

+2

Zawsze, gdy to możliwe, należy unikać zdalnej obsługi i HTTP na rzecz WCF –

2

Czy usługi znajdują się w tym samym oknie? Czy masz .NET 4? Gorąco zalecamy używanie najszybszego możliwego trybu, memory-mapped files.

Jeśli są na tym samym polu, ale nie masz .NET 4 lub są w homogenicznej sieci Microsoft Windows, może zadziałać named pipes. Bardziej do rzeczy, użyłbym WCF over a named pipe.

4

Znalazłem wszystkie inne odpowiedzi prawidłowe, ale trochę zbyt skomplikowane (WCF to wielka sprawa) i nie są skalowalne (pamięć i nazwane potoki działają tylko na tym samym serwerze). Proponuję Ci system powiadamiania DotNetMQ. Jest łatwy w użyciu i wdrażaniu i pozwala komunikować się między procesami działającymi na różnych serwerach.

Powiązane problemy