2009-11-03 6 views
5

Как я могу перечислить какой-либо идентификатор местоположения для всех подключенных клиентов для servicehost? Я использую дуплексное соединение для длительных вычислений. Хост службы - одноэлементный.Получение списка подключенных клиентов для службы wcf

Я могу вычислить (в .net 3.5) ip вызывающего клиента, но я не уверен, как получить ip всех подключенных клиентов.

ответ

1

Я не думаю, что для этого есть что-то встроенное, но было бы довольно легко построить отслеживающий IServiceBehavior + IDispatchMessageInspector, который будет проверять RemoteClientEnpointMessageProperty до того, как вызов будет отправлен в службу impl и будет использовать IP-адрес клиента в общий список и удалить его, когда завершается вызов/сеанс.

2

По умолчанию WCF рекламирует использование услуг «за вызов», например. ваши запросы клиента, запрос обрабатывается, а затем клиент снова отключается.

WCF не слишком хорошо подходит для и не предназначен для длительных соединений - поэтому вы не можете «перечислить подключенных к сети пользователей», поскольку их нет (или только на долю Второй).

WCF не похож на сервер доменов Windows, на котором вы входите в систему и заходите в нее в течение длительного периода времени.

+0

Извините, что в моем сообщении не было ясно, но я не использую поведение службы по умолчанию. [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] С InstanceContexMode.Single существует один экземпляр с более длительным сроком службы, чем режим по умолчанию для каждого вызова. Сервис, который в настоящее время используется, использует контракт обратного вызова для отправки результатов, когда они готовы. Клиент кэширует подключение к серверу, чтобы использовать его для нескольких запросов. Соединения длинные. – Sindhudweep

+0

ОК - Я не думаю, что это очень хорошая идея, но я не знаю подробностей вашей установки; к сожалению, в WCF 3.5 нет поддержки для управления и наблюдения - это будет частью проекта «Дублин» - надстройка управления для IIS7/WAS запланирована на некоторое время после .NET 4 (март 2010 г.)). –