Udostępnij za pośrednictwem


Instrukcje: Określanie powiązań usługi w kodzie

W tym przykładzie ICalculator kontrakt jest definiowany dla usługi kalkulatora, usługa jest implementowana w klasie, a następnie jej punkt końcowy jest definiowany w CalculatorService kodzie, w którym określono, że usługa musi używać BasicHttpBinding klasy .

Zazwyczaj najlepszym rozwiązaniem jest określenie powiązania i adresu informacji deklaratywnie w konfiguracji, a nie imperatywnie w kodzie. Definiowanie punktów końcowych w kodzie zwykle nie jest praktyczne, ponieważ powiązania i adresy wdrożonej usługi zwykle różnią się od tych używanych podczas opracowywania usługi. Ogólnie rzecz biorąc, utrzymywanie powiązania i adresowania informacji poza kodem umożliwia ich zmianę bez konieczności ponownego kompilowania lub ponownego wdrażania aplikacji.

Opis sposobu konfigurowania tej usługi przy użyciu elementów konfiguracji zamiast kodu można znaleźć w temacie How to: Specify a Service Binding in Configuration (Jak określić powiązanie usługi w konfiguracji).

Aby określić w kodzie, aby użyć elementu BasicHttpBinding dla usługi

  1. Zdefiniuj kontrakt usługi dla typu usługi.

    [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. Zaimplementuj kontrakt usługi w klasie usługi.

    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. W aplikacji hostingu utwórz podstawowy adres usługi i powiązanie do użycia z usługą.

    
    // 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. Utwórz hosta dla usługi, dodaj punkt końcowy, a następnie otwórz hosta.

    
    
    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
    

Aby zmodyfikować wartości domyślne właściwości powiązania

  1. Aby zmodyfikować jedną z domyślnych BasicHttpBinding wartości właściwości klasy, ustaw wartość właściwości powiązania na nową wartość przed utworzeniem hosta. Aby na przykład zmienić domyślne wartości limitu czasu otwierania i zamykania z 1 minuty na 2 minuty, użyj następującego polecenia.

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

Zobacz też