Delen via


Procedure: Een servicebinding opgeven in code

In dit voorbeeld wordt een ICalculator contract gedefinieerd voor een rekenmachineservice, wordt de service geïmplementeerd in de CalculatorService klasse en wordt het eindpunt vervolgens gedefinieerd in code, waarbij wordt opgegeven dat de service de BasicHttpBinding klasse moet gebruiken.

Het is meestal de aanbevolen procedure om de bindings- en adresgegevens declaratief op te geven in de configuratie in plaats van imperatief in code. Het definiëren van eindpunten in code is meestal niet praktisch omdat de bindingen en adressen voor een geïmplementeerde service doorgaans afwijken van de bindingen en adressen die worden gebruikt terwijl de service wordt ontwikkeld. Over het algemeen kunnen ze de bindings- en adresseringsgegevens buiten de code houden zonder de toepassing opnieuw te hoeven compileren of opnieuw te implementeren.

Zie Procedure: Een servicebinding opgeven in configuratie voor een beschrijving van het configureren van deze service met behulp van configuratie-elementen in plaats van code.

In code opgeven voor het gebruik van de BasicHttpBinding voor de service

  1. Definieer een servicecontract voor het type 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. Implementeer het servicecontract in een serviceklasse.

    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. Maak in de hostingtoepassing het basisadres voor de service en de binding die moet worden gebruikt met de 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. Maak de host voor de service, voeg het eindpunt toe en open de 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
    

De standaardwaarden van de bindingseigenschappen wijzigen

  1. Als u een van de standaardeigenschapswaarden van de BasicHttpBinding klasse wilt wijzigen, stelt u de eigenschapswaarde voor de binding in op de nieuwe waarde voordat u de host maakt. Als u bijvoorbeeld de standaardwaarden voor openen en sluiten van 1 minuut wilt wijzigen in 2 minuten, gebruikt u het volgende.

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

Zie ook