2009-11-03 11 views
5

Jak mogę wyliczyć identyfikator miejsca dla wszystkich podłączonych klientów dla hosta usługi? Używam połączenia dwustronnego do długich obliczeń. Host usługi jest singleton.Uzyskiwanie listy podłączonych klientów dla usługi wcf

Mogę wykombinować (w .net 3.5) adres IP klienta wywołującego, ale nie jestem pewien, jak uzyskać IP wszystkich podłączonych klientów.

Odpowiedz

1

Nie sądzę, że jest w tym coś wbudowanego, ale byłoby całkiem łatwo zbudować śledzenie IServiceBehavior + IDispatchMessageInspector, które sprawdzałoby RemoteClientEnpointMessageProperty zanim wywołanie zostanie wysłane do usługi impl i włożyło IP klienta na listę udostępnioną i usuń ją po zakończeniu połączenia/sesji.

2

Domyślnie WCF promuje korzystanie z usług "na połączenie", np. połączenia z klientem, żądanie zostanie obsłużone, a następnie klient zostanie natychmiast rozłączony.

WCF nie nadaje się zbyt dobrze i nie jest przeznaczony do długotrwałych połączeń - więc nie można naprawdę "wyliczyć aktualnie połączonych użytkowników", ponieważ nie ma żadnych (lub tylko na ułamek sekunda).

WCF nie przypomina serwera domeny systemu Windows, na którym użytkownik loguje się i pozostaje zalogowany przez dłuższy czas.

+0

Przepraszam, że nie było jasne w moim poście, ale nie używam domyślnego zachowania usługi. [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] W instancjiContexMode.Single istnieje jedno wystąpienie o dłuższej żywotności niż domyślny tryb "na połączenie". Usługa aktualnie realizowana korzysta z umowy oddzwaniania, aby wysłać wyniki, gdy będą gotowe. Klient buforuje połączenie z serwerem, aby umożliwić korzystanie z wielu żądań. Połączenia są długotrwałe. – Sindhudweep

+0

OK - Nie sądzę, że to bardzo dobry pomysł, ale nie znam szczegółów konfiguracji; Niestety, w WCF 3.5, nie ma zbyt wiele wsparcia dla zarządzania i nadzoru - będzie to część projektu "Dublin" - dodatek do zarządzania IIS7/WAS, który ma zostać wysłany jakiś czas po .NET 4 (marzec 2010 r.). –

Powiązane problemy