Configuration client

Vous pouvez utiliser la configuration du client Windows Communication Foundation (WCF) pour spécifier l’adresse, la liaison, le comportement, le contrat et les propriétés « ABC » du point de terminaison de client, que les clients utilisent pour se connecter aux points de terminaison de service. L’élément <client> a un élément <endpoint> dont les attributs sont utilisés pour configurer les ABC de point de terminaison. Ces attributs sont traités dans la section Configuration des points de terminaison.

L’élément <endpoint> contient également un élément <metadata> utilisé pour spécifier des paramètres d’importation et d’exportation des métadonnées, un élément <headers> qui contient une collection d’en-têtes d’adresse personnalisés, et un élément <identity> qui permet l’authentification d’un point de terminaison par d’autres points de terminaison qui échangent des messages avec lui. Les éléments <headers> et <identity> font partie de EndpointAddress et sont traités dans l’article Adresses. Des liens vers les rubriques qui expliquent l’utilisation des extensions de métadonnées sont fournis dans la section Configuration des métadonnées.

Configuration des points de terminaison

La configuration du client est conçue pour permettre au client de spécifier un ou plusieurs points de terminaison, chacun avec ses propres nom, adresse et contrat, et référençant chacun les éléments <bindings> et <behaviors> de la configuration du client à utiliser pour configurer ces points de terminaison. Le fichier de configuration du client doit être nommé « App.config » parce que c’est le nom que le runtime WCF attend. L'exemple suivant illustre un fichier de configuration client.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
  <system.serviceModel>  
        <client>  
          <endpoint  
            name="endpoint1"  
            address="http://localhost/ServiceModelSamples/service.svc"  
            binding="wsHttpBinding"  
            bindingConfiguration="WSHttpBinding_IHello"  
            behaviorConfiguration="IHello_Behavior"  
            contract="IHello" >  
  
            <metadata>  
              <wsdlImporters>  
                <extension  
                  type="Microsoft.ServiceModel.Samples.WsdlDocumentationImporter, WsdlDocumentation"/>  
              </wsdlImporters>  
            </metadata>  
  
            <identity>  
              <servicePrincipalName value="host/localhost" />  
            </identity>  
          </endpoint>  
            <!-- Add another endpoint by adding another <endpoint> element. -->
          <endpoint  
            name="endpoint2">  
           //Configure another endpoint here.  
          </endpoint>  
        </client>  
  
<!-- The bindings section references by the bindingConfiguration endpoint attribute.   -->
    <bindings>  
      <wsHttpBinding>  
        <binding name="WSHttpBinding_IHello"
                 bypassProxyOnLocal="false"
                 hostNameComparisonMode="StrongWildcard">  
          <readerQuotas maxDepth="32"/>  
          <reliableSession ordered="true"
                           enabled="false" />  
          <security mode="Message">  
           <!-- Security settings go here.   -->
          </security>  
        </binding>  
        <binding name="Another Binding"  
          <!-- Configure this binding here. -->  
        </binding>  
          </wsHttpBinding>  
     </bindings>  
  
<!-- The behavior section references by the behaviorConfiguration endpoint attribute.   -->
        <behaviors>  
            <endpointBehaviors>  
                <behavior name=" IHello_Behavior ">  
                    <clientVia />  
                </behavior>  
            </endpointBehaviors>  
        </behaviors>  
  
    </system.serviceModel>  
</configuration>  

L'attribut name facultatif identifie de manière unique un point de terminaison pour un contrat donné. Il est utilisé par le ChannelFactory<TChannel> ou par le ClientBase<TChannel> pour spécifier quel point de terminaison est visé dans la configuration client et doit être chargé lorsqu'un canal est créé pour le desservir. Le nom générique de configuration du point de terminaison « * » est disponible et indique à la méthode ApplyConfiguration qu'elle doit charger toute configuration de point de terminaison dans le fichier, si tant est qu'une configuration est disponible, et lève une exception dans le cas contraire. Si cet attribut est omis, le point de terminaison correspondant est utilisé comme point de terminaison par défaut associé au type de contrat spécifié. La valeur par défaut pour l'attribut name est une chaîne vide qui est mise en correspondance comme tout autre nom.

Chaque point de terminaison doit avoir une adresse qui lui est associée pour pouvoir être localisé et identifié. L'attribut address peut être utilisé pour spécifier l'URL qui fournit l'emplacement du point de terminaison. Mais l'adresse d'un point de terminaison de service peut également être spécifiée dans du code en créant un URI et en l'ajoutant à ServiceHost qui utilise l'une des méthodes AddServiceEndpoint. Pour plus d’informations, consultez Adresses. Comme indiqué en introduction, les éléments <headers> et <identity> font partie de EndpointAddress et sont également traités dans la rubrique Adresses.

L’attribut binding indique le type de liaison que le point de terminaison s’attend à utiliser lors de la connexion à un service. Ce type doit posséder une section de configuration inscrite s'il doit être référencé. Dans l’exemple précédent, c’est la section <wsHttpBinding>, qui indique que le point de terminaison utilise un WSHttpBinding. Mais il peut y avoir plusieurs liaisons d’un type donné utilisables par le point de terminaison. Chacune de celles-ci a son propre élément <binding> dans l’élément de type ( de la liaison). L’attribut bindingconfiguration est utilisé pour distinguer plusieurs liaisons du même type. Sa valeur est mise en correspondance avec l’attribut name de l’élément <binding>. Pour plus d’informations sur la configuration d’une liaison de client à l’aide de la configuration, consultez Guide pratique pour spécifier une liaison de client dans la configuration.

L’attribut behaviorConfiguration est utilisé pour spécifier quel élément <behavior> des <endpointBehaviors> le point de terminaison doit utiliser. Sa valeur est mise en correspondance avec l’attribut name de l’élément <behavior>. Pour obtenir un exemple de l’utilisation de la configuration pour spécifier des comportements de clients, consultez Configuration des comportements des clients.

L'attribut contract spécifie quel contrat le point de terminaison expose. Cette valeur correspond au ConfigurationName de ServiceContractAttribute. La valeur par défaut est le nom de type complet de la classe qui implémente le service.

Configuration des métadonnées

L’élément <metadata> est utilisé pour spécifier les paramètres utilisés pour inscrire des extensions d’importation de métadonnées. Pour plus d’informations sur l’extension du système de métadonnées, consultez Extension du système de métadonnées.

Voir aussi