Comment : spécifier une liaison de service dans le codeHow to: Specify a Service Binding in Code

Dans cet exemple, un contrat ICalculator est défini pour un service de calculatrice, le service est implémenté dans la classe CalculatorService, puis son point de terminaison est défini dans du code, où il est spécifié que le service doit utiliser la classe BasicHttpBinding.In this example, an ICalculator contract is defined for a calculator service, the service is implemented in the CalculatorService class, and then its endpoint is defined in code, where it is specified that the service must use the BasicHttpBinding class.

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.

Pour obtenir une description de la façon de configurer ce service à l’aide d’éléments de configuration au lieu de code, consultez Comment : spécifier une liaison de service dans la configuration.For a description of how to configure this service using configuration elements instead of code, see How to: Specify a Service Binding in Configuration.

Pour spécifier l'utilisation de BasicHttpBinding dans du code pour le serviceTo specify in code to use the BasicHttpBinding for 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
    
    
  3. Dans l’application d’hébergement, créez l’adresse de base pour le service et la liaison à utiliser avec le service.In the hosting application, create the base address for the service and the binding to use with the service.

    
    // Specify a base address for the service
    
    String baseAddress = "http://localhost/CalculatorService";
    // Create the binding to be used by the service.
    
    BasicHttpBinding binding1 = new BasicHttpBinding();
    
    
    ' Specify a base address for the service
    Dim baseAddress = "http://localhost/CalculatorService"
    ' Create the binding to be used by the service.
    
    Dim binding1 As New BasicHttpBinding()
    
  4. Créez l'hôte pour le service, ajoutez le point de terminaison, puis ouvrez l'hôte.Create the host for the service, add the endpoint, and then open the host.

    
    
               using(ServiceHost host = new ServiceHost(typeof(CalculatorService)))
               {
                   host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress);
    
    
    
                   host.Open();
               }	
    
    
    
    Using host As New ServiceHost(GetType(CalculatorService))
        With host
            .AddServiceEndpoint(GetType(ICalculator), _
                                    binding1, _
                                    baseAddress)
    
            host.Open()
        End With
    End Using
    

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 classe BasicHttpBinding, affectez la nouvelle valeur de propriété sur la liaison avant de créer l’hôte.To modify one of the default property values of the BasicHttpBinding class, set the property value on the binding to the new value before creating the host. Par exemple, pour modifier les valeurs par défaut de délai d'attente d'ouverture et de fermeture de 1 minute à 2 minutes, procédez comme suit.For example, to change the default open and close timeout values of 1 minute to 2 minutes, use the following.

    
               TimeSpan modifiedCloseTimeout = new TimeSpan(00, 02, 00);
               binding1.CloseTimeout = modifiedCloseTimeout;
    
    
    Dim modifiedCloseTimeout As New TimeSpan(0, 2, 0)
    binding1.CloseTimeout = modifiedCloseTimeout
    

Voir aussiSee also