Подключение к службе WCF без адреса конечной точки - PullRequest
0 голосов
/ 24 октября 2018

Когда клиенты вызывают службу WCF, первым шагом является создание подключения к службе (используя адрес конечной точки или файл конфигурации для записи URL-адреса сервера).Но если клиент не знает адрес службы, как ему найти службу?

1 Ответ

0 голосов
/ 24 октября 2018

Как я уже говорил, сервер WCF должен предоставлять клиенту фиксированную конечную точку, чтобы клиент мог ее обнаружить.DiscoveryEndpoint может использовать Unicast / Multicast для публикации метаданных службы.Одноадресная передача настраивает конечную точку с DiscoveryEndpoint, и ей должен быть назначен фиксированный адрес, в то время как Multicast использует UdpDiscoveryEndpoint, который публикует метаданные службы с UDP Multicast.Поэтому нет необходимости присваивать адрес UdpDiscoveryEndpoint, поскольку тот факт, что он имеет широковещательный адрес по умолчанию, например, ipv4, является soap.udp: //239.255.255.250: 3702.

Служба должна добавить ServiceDiscoveryBehaviorв Сервис поведения коллекции.По умолчанию после того, как служба применяет поведение ServiceDiscovery Behavior, все конечные точки службы предоставляются клиентам. Если мы хотим скрыть одну из них, нам необходимо отключить EndpointDiscoveryBehavior на определенной конечной точке.

 <endpointBehaviors>
        <behavior>
          <endpointDiscovery enabled="false">
          </endpointDiscovery>
        </behavior>
      </endpointBehaviors>

На клиенте-боковая сторона.мы находим доступный сервис с классом DiscoveryClient, который находится в сборке System.ServiceModel.Discovery.После завершения поиска все доступные конечные точки сохраняются в объекте FindResponse.Мы могли бы вызвать целевой сервис с его атрибутом Endpoints.

...