Verwenden einer benutzerdefinierten Bindung mit dem SuchclientchannelUsing a Custom Binding with the Discovery Client Channel

Wenn Sie eine benutzerdefinierte Bindung mit DiscoveryClientBindingElement verwenden, müssen Sie ein DiscoveryEndpointProvider-Objekt definieren, das DiscoveryEndpoint-Instanzen erstellt.When using a custom binding with the DiscoveryClientBindingElement, you must define a DiscoveryEndpointProvider that creates DiscoveryEndpoint instances.

Erstellen eines DiscoveryEndpointProvider-ObjektsCreating a DiscoveryEndpointProvider

Die DiscoveryEndpointProvider ist verantwortlich für das Erstellen von DiscoveryEndpoint Instanzen bei Bedarf.The DiscoveryEndpointProvider is responsible for creating DiscoveryEndpoint instances on demand. Um einen Suchendpunktanbieter zu definieren, leiten Sie eine Klasse von DiscoveryEndpointProvider ab, überschreiben die GetDiscoveryEndpoint-Methode und geben einen neuen Suchendpunkt zurück.To define a discovery endpoint provider, derive a class from DiscoveryEndpointProvider and override the GetDiscoveryEndpoint method and return a new discovery endpoint. Das folgende Beispiel zeigt, wie Sie einen Suchendpunktanbieter erstellen.The following example shows how to create a discovery endpoint provider.

// 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);  
   }  
}  

Sobald Sie den Suchendpunktanbieter definiert haben, können Sie eine benutzerdefinierte Bindung erstellen und das DiscoveryClientBindingElement hinzufügen, das auf den Suchendpunktanbieter verweist. Dies wird im folgenden Beispiel veranschaulicht.Once you have defined the discovery endpoint provider you can create a custom binding and add the DiscoveryClientBindingElement, which references the discovery endpoint provider as shown in the following example.

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);  

Weitere Informationen zu den Discovery Clientchannel zu verwenden, finden Sie unter mit der Discovery-Clientchannel.For more information about using the discovery client channel, see Using the Discovery Client Channel. Ein vollständiges Codebeispiel finden Sie unter Ermittlung Binding-Element-BeispielFor a complete code example, see Discovery Binding Element Sample

Siehe auchSee Also

Übersicht über die WCF-SucheWCF Discovery Overview
Verwenden des ErmittlungsclientkanalsUsing the Discovery Client Channel
Beispiel für ErmittlungsbindungselementDiscovery Binding Element Sample