Share via


Configuration simplifiée

La configuration de services Windows Communication Foundation (WCF) peut s'avérer une tâche complexe. Il existe de nombreuses options différentes et il n'est pas toujours évident de déterminer les paramètres nécessaires. Bien que les fichiers de configuration augmentent la flexibilité des services WCF, ils sont également la source de nombreux problèmes difficiles à détecter. .NET Framework version 4 résout ces problèmes et permet aux utilisateurs de diminuer la taille et la complexité de la configuration du service.

Configuration simplifiée

Dans les fichiers de configuration WCF, la section <system.serviceModel> contient un élément <service> pour chaque service hébergé. L'élément <service> contient une collection d'éléments <endpoint> qui spécifient les points de terminaison exposés pour chaque service et éventuellement un jeu de comportements de service. Les éléments <endpoint> spécifient l'adresse, la liaison et le contrat exposés par le point de terminaison, et éventuellement une configuration de liaison et des comportements de point de terminaison. La section <system.serviceModel> contient également un élément <behaviors> qui vous permet de spécifier des comportements de service ou de point de terminaison. L'exemple suivant présente la section <system.serviceModel> d'un fichier de configuration.

system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name=”MyServiceBehavior”>
        <serviceMetadata httpGetEnabled=”true”>
        <serviceDebug includeExceptionDetailInFaults=”false”>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <bindings>
   <basicHttpBinding>
      <binding name=MyBindingConfig”
               maxBufferSize=”100”
               maxReceiveBufferSize=”100” />
   </basicHttpBinding>
   </bindings>   <services>
    <service behaviorConfiguration=”MyServiceBehavior”
             name=”MyService”>
      <endpoint address=””
                binding=”basicHttpBinding”
                contract=”ICalculator”
                bindingConfiguration=”MyBindingConfig” />
      <endpoint address=”mex”
                binding=”mexHttpBinding”
                contract=”IMetadataExchange”/>
    </service>
  </services>
</system.serviceModel>

.NET Framework 4 simplifie la configuration d'un service WCF en supprimant la nécessité d'avoir un élément <service>. Si vous n'ajoutez pas de points de terminaison dans la section <service> éventuelle, et si votre service ne définit aucun point de terminaison par programme, un jeu de points de terminaison est automatiquement ajouté à votre service : un pour chaque adresse de base de service et pour chaque contrat implémenté par votre service. Dans chacun de ces points de terminaison, l'adresse du point de terminaison correspond à l'adresse de base, la liaison est déterminée par le schéma d'adresse de base et le contrat est celui implémenté par votre service. Si vous n'avez pas besoin de spécifier de comportements de point de terminaison ou de service, ni de modifier un paramètre de liaison, il est inutile de spécifier un fichier de configuration. Si un service implémente deux contrats et que l'hôte active à la fois les transports HTTP et TCP, l'hôte de service crée quatre points de terminaison par défaut, un pour chaque contrat utilisant chaque transport. Pour créer des points de terminaison par défaut, l'hôte de service doit savoir quelles liaisons utiliser. Ces paramètres sont spécifiés dans une section <protocolMappings> à l'intérieur de la section <system.serviceModel>. La section <protocolMappings> contient une liste de schémas de protocole de transport mappés aux types de liaison. L'hôte du service utilise les adresses de base qui lui sont transmises pour déterminer quelle liaison utiliser. L'exemple suivant utilise l'élément <protocolMappings>.

Ee358768.note(fr-fr,VS.100).gifRemarque :
Les services hébergés dans les services IIS (Internet Information Services) ou WAS (Windows Process Activation Service) utilisent le répertoire virtuel comme leur adresse de base.

<protocolMapping>
  <add scheme=”http”     binding=”basicHttpBinding” bindingConfiguration=”MyBindingConfiguration”/>
  <add scheme=”net.tcp”  binding=”netTcpBinding”/>
  <add scheme=”net.pipe” binding=”netNamedPipeBinding”/>
  <add scheme=”net.msmq” binding=”netMSMQBinding”/>
</protocolMapping>

Dans l'exemple précédent, un point de terminaison avec une adresse de base commençant par le schéma « http » utilise la liaison BasicHttpBinding. Un point de terminaison avec une adresse de base commençant par le schéma « net.tcp » utilise la liaison NetTcpBinding. Vous pouvez remplacer des paramètres dans un fichier local App.config ou Web.config.

Chaque élément dans la section <protocolMappings> doit spécifier un schéma et une liaison. Éventuellement, il peut spécifier un attribut bindingConfiguration qui indique une configuration de liaison dans la section <bindings> du fichier de configuration. Si aucun attribut bindingConfiguration n'est spécifié, la configuration de liaison anonyme du type de liaison approprié est utilisée.

Les comportements de service sont configurés pour les points de terminaison par défaut en utilisant des sections <behavior> anonymes à l'intérieur des sections <serviceBehaviors>. Les éléments <behavior> sans nom dans <serviceBehaviors> sont utilisés pour configurer des comportements de service. Par exemple, le fichier de configuration suivant permet la publication de métadonnées de service pour tous les services qui se trouvent dans l'hôte.

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>    <!-- No <service> tag is necessary. Default endpoints are added to the service -->
    <!-- The service behavior with name="" is picked up by the service -->
 </system.serviceModel>

Les comportements de point de terminaison sont configurés en utilisant des sections <behavior> anonymes à l'intérieur des sections <serviceBehaviors>.

L'exemple suivant est un fichier de configuration équivalent à celui qui se trouve au début de cette rubrique. Il utilise le modèle de configuration simplifié.

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="True"/>
          <serviceDebug includeExceptionDetailInFaults=”false”/>
        </behavior>
      </serviceBehaviors>
    </behaviors>    <bindings>
       <basicHttpBinding>
          <binding maxBufferSize=”100”
                   maxReceiveBufferSize=”100” />
       </basicHttpBinding>
    </bindings>    <!-- No <service> tag is necessary. Default endpoints will be added to the service -->
    <!-- The service behavior with name="" will be picked up by the service -->
    <protocolMapping>
      <add scheme=”http”     binding=”basicHttpBinding” / </protocolMapping>
  </system.serviceModel>

Voir aussi

Concepts

Configuration des services à l'aide de fichiers de configuration
Configuration de liaisons pour les services Windows Communication Foundation
Configuration des liaisons fournies par le système

Autres ressources

Configuration des services
Configuring Windows Communication Foundation Applications