Comment : spécifier une liaison de service dans la configurationHow to: Specify a Service Binding in Configuration

Dans cet exemple, un contrat ICalculator est défini pour un service de calculatrice de base, le service est implémenté dans la classe CalculatorService, puis son point de terminaison est configuré dans le fichier Web.config, où il est spécifié que le service utilise BasicHttpBinding.In this example, an ICalculator contract is defined for a basic calculator service, the service is implemented in the CalculatorService class, and then its endpoint is configured in the Web.config file, where it is specified that the service uses the BasicHttpBinding. Pour obtenir une description de la façon de configurer ce service à l’aide de code au lieu d’une configuration, consultez Comment : spécifier une liaison de service dans le code.For a description of how to configure this service using code instead of a configuration, see How to: Specify a Service Binding in Code.

Il est généralement conseillé de spécifier de façon déclarative les informations de liaison et d'adresse dans la configuration plutôt que de manière impérative dans le code.It is usually the best practice to specify the binding and address information declaratively in configuration rather than imperatively in code. La définition de points de terminaison dans le code est généralement peu pratique car les liaisons et les adresses pour un service déployé sont en général différentes de celles utilisées au cours du développement du service.Defining endpoints in code is usually not practical because the bindings and addresses for a deployed service are typically different from those used while the service is being developed. Plus généralement, le fait de laisser les informations de liaison et d’adresse hors du code leur permet de changer sans nécessiter de recompilation ou de redéploiement de l’application.More generally, keeping the binding and addressing information out of the code allows them to change without having to recompile or redeploy the application.

Toutes les étapes de configuration suivantes peuvent être effectuées à l’aide de l' outil Éditeur de configuration (SvcConfigEditor. exe).All of the following configuration steps can be undertaken using the Configuration Editor Tool (SvcConfigEditor.exe).

Pour obtenir la copie source de cet exemple, consultez BasicBinding.For the source copy of this example, see BasicBinding.

Pour spécifier le BasicHttpBinding à utiliser pour configurer le serviceTo specify the BasicHttpBinding to use to configure the service

  1. Définissez un contrat de service pour le type de service.Define a service contract for the type of service.

    [ServiceContract]
    public interface ICalculator
    {
       [OperationContract]
       double Add(double n1, double n2);
       [OperationContract]
       double Subtract(double n1, double n2);
       [OperationContract]
       double Multiply(double n1, double n2);
       [OperationContract]
       double Divide(double n1, double n2);
    }
    
    
      <ServiceContract()> _
    Public Interface ICalculator
          <OperationContract()> _
          Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
          <OperationContract()> _
          Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
          <OperationContract()> _
          Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
          <OperationContract()> _
          Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
      End Interface
    
    
  2. Implémentez le contrat de service dans une classe de service.Implement the service contract in a service class.

    public class CalculatorService : ICalculator
    {
       public double Add(double n1, double n2)
       {
          return n1 + n2;
       }
       public double Subtract(double n1, double n2)
       {
          return n1 - n2;
       }
       public double Multiply(double n1, double n2)
       {
          return n1 * n2;
       }
       public double Divide(double n1, double n2)
       {
          return n1 / n2;
       }
    } 
    
    
    Public Class CalculatorService
        Implements ICalculator
        Public Function Add(ByVal n1 As Double, _
                            ByVal n2 As Double) As Double Implements ICalculator.Add
            Return n1 + n2
        End Function
        Public Function Subtract(ByVal n1 As Double, _
                                 ByVal n2 As Double) As Double Implements ICalculator.Subtract
            Return n1 - n2
        End Function
        Public Function Multiply(ByVal n1 As Double, _
                                 ByVal n2 As Double) As Double Implements ICalculator.Multiply
            Return n1 * n2
        End Function
        Public Function Divide(ByVal n1 As Double, _
                               ByVal n2 As Double) As Double Implements ICalculator.Divide
            Return n1 / n2
        End Function
    End Class
    
    

    Notes

    Les informations de liaison ou d'adresse ne sont pas spécifiées dans l'implémentation du service.Address or binding information is not specified inside the implementation of the service. De plus, il n'est pas nécessaire d'écrire du code pour extraire ces informations du fichier de configuration.Also, code does not have to be written to fetch that information from the configuration file.

  3. Créez un fichier Web.config pour configurer un point de terminaison pour le CalculatorService qui utilise le WSHttpBinding.Create a Web.config file to configure an endpoint for the CalculatorService that uses the WSHttpBinding.

    <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name=" CalculatorService" >  
    
            <!-- Leave the address blank to be populated by default -->
            <!-- from the hosting environment,in this case IIS, so -->
            <!-- the address will just be that of the IIS Virtual -->
            <!-- Directory. -->
    
            <!-- Specify the binding configuration name for that -->
            <!-- binding type. This is optional but useful if you -->
            <!-- want to modify the properties of the binding. -->
            <!-- The bindingConfiguration name Binding1 is defined -->
            <!-- below in the bindings element. -->
            <endpoint   
                address=""   
                binding="wsHttpBinding"  
                bindingConfiguration="Binding1"  
                contract="ICalculator" />  
          </service>  
        </services>  
        <bindings>  
          <wsHttpBinding>  
            <binding name="Binding1">  
              <!-- Binding property values can be modified here. -->  
              <!-- See the next procedure. -->  
            </binding>  
          </wsHttpBinding>  
       </bindings>  
      </system.serviceModel>  
    </configuration>  
    
  4. Créez un fichier Service.svc qui contient la ligne suivante et placez-le dans votre répertoire virtuel des services Internet (IIS).Create a Service.svc file that contains the following line and place it in your Internet Information Services (IIS) virtual directory.

    <%@ServiceHost language=c# Service="CalculatorService" %>   
    

Pour modifier les valeurs par défaut des propriétés de liaisonTo modify the default values of the binding properties

  1. Pour modifier l’une des valeurs de propriété par défaut de la WSHttpBinding, créez un nouveau nom de configuration de liaison-<binding name="Binding1">-dans l’élément <wsHttpBinding > et définissez les nouvelles valeurs des attributs de la liaison dans cet élément de liaison.To modify one of the default property values of the WSHttpBinding, create a new binding configuration name - <binding name="Binding1"> - within the <wsHttpBinding> element and set the new values for the attributes of the binding in this binding element. Par exemple, pour modifier les valeurs par défaut de délai d'attente d'ouverture et de fermeture de 1 minute à 2 minutes, ajoutez le code suivant au fichier de configuration.For example, to change the default open and close timeout values of 1 minute to 2 minutes, add the following to the configuration file.

    <wsHttpBinding>  
      <binding name="Binding1"  
               closeTimeout="00:02:00"  
               openTimeout="00:02:00">  
      </binding>  
    </wsHttpBinding>  
    

Voir aussiSee also