конечные точки .net 4 ws-discovery - PullRequest
0 голосов
/ 01 декабря 2009

Я использую ws-discovery в .NET 4.0, и он работает хорошо. У меня есть один вопрос: как работать с неработающими службами? Например, скажем, у меня есть IService на сервере A и сервере B. Скажем, этот сервис на сервере A поврежден (имитируйте это, останавливая пул приложений). Ваш клиент все равно найдет 2 службы, поэтому, когда вы пытаетесь использовать эту службу, вы не можете гарантировать, что она является рабочей.

Итак, мой вопрос: вы справляетесь с этим, перебирая конечные точки, и если первая не удается, попробуйте следующую. Или есть способ получить только те сервисы, которые были активны на момент поиска? Или я где-то упускаю смысл - вполне возможно: -)

Спасибо

Ответы [ 2 ]

0 голосов
/ 18 августа 2011

Я обнаружил, что это распространенная проблема в wcf discovery. Аналогичная проблема возникает, когда сервер находится в двух сетях. При обнаружении будут возвращены оба никнейма адреса, но, конечно, клиент может достичь сервера только через одну из этих сетей.

Обходное решение, которое я использовал, - добавить функцию «void Ping ()» на сервер. Затем после обнаружения клиент пытается вызвать эту функцию «Ping ()» на всех обнаруженных конечных точках. Те, которые возвращают ответ, хорошие, другие плохие.

Я закончил тем, что сделал еще один шаг и порождал поток, который иногда вызывает эту функцию "Ping ()". Затем, когда исчезает хороший сервер, поток удаляет этот URI из коллекции «хороших» URI.

Я чувствую твою боль.

0 голосов
/ 01 декабря 2009

Эта статья, кажется, охватывает то, о чем вы говорите, путем определения адреса конечной точки во время выполнения.

http://weblogs.asp.net/gsusx/archive/2009/02/13/using-ws-discovery-in-wcf-4-0.aspx

...