Поделиться через


Использование пользовательской привязки для клиентского канала обнаружения

При использовании пользовательской привязки к DiscoveryClientBindingElement необходимо определить поставщик DiscoveryEndpointProvider, который будет создавать экземпляры DiscoveryEndpoint.

Создание DiscoveryEndpointProvider

DiscoveryEndpointProvider отвечает за создание DiscoveryEndpoints по запросу. Чтобы определить поставщика конечной точки обнаружения, создайте класс из DiscoveryEndpointProvider, переопределив метод GetDiscoveryEndpoint, а затем вернув новую конечную точку обнаружения. В следующем примере показан процесс создания поставщика конечной точки обнаружения.

// Extend DiscoveryEndpointProvider class to change the default DiscoveryEndpoint
// to the DiscoveryClientBindingElement. The Discovery ClientChannel 
// uses this endpoint to send Probe message.
public class UdpDiscoveryEndpointProvider : DiscoveryEndpointProvider
{
   public override DiscoveryEndpoint GetDiscoveryEndpoint()
   {
      return new UdpDiscoveryEndpoint(DiscoveryVersion.WSDiscoveryApril2005);
   }
}

После того как поставщик конечной точки обнаружения определен, можно создать пользовательскую привязку и добавить DiscoveryClientBindingElement, который содержит ссылки на поставщик конечной точки обнаружения, как показано в следующем примере.

DiscoveryClientBindingElement discoveryBindingElement = new DiscoveryClientBindingElement();
            
// Provide the search criteria and the endpoint over which the probe is sent.
discoveryBindingElement.FindCriteria = new FindCriteria(typeof(ICalculatorService));
discoveryBindingElement.DiscoveryEndpointProvider = new UdpDiscoveryEndpointProvider();

CustomBinding customBinding = new CustomBinding(new NetTcpBinding());
// Insert DiscoveryClientBindingElement at the top of the BindingElement stack.
// An exception is thrown if this binding element is not at the top.
customBinding.Elements.Insert(0, discoveryBindingElement);

Дополнительные сведения об использовании клиентского канала обнаружения см. в разделе Использование клиентского канала обнаружения. Пример полного кода см. в разделе Образец элемента привязки для обнаружения.

См. также

Задачи

Образец элемента привязки для обнаружения

Основные понятия

Общие сведения об обнаружении WCF
Использование клиентского канала обнаружения