Udostępnij za pośrednictwem


Instrukcje: Określanie wiązania usługi w konfiguracji

W tym przykładzie ICalculator kontrakt jest definiowany dla podstawowej usługi kalkulatora, usługa jest implementowana w CalculatorService klasie, a następnie jej punkt końcowy jest skonfigurowany w pliku Web.config, gdzie określono, że usługa używa BasicHttpBindingklasy . Opis sposobu konfigurowania tej usługi przy użyciu kodu zamiast konfiguracji można znaleźć w temacie How to: Specify a Service Binding in Code (Jak określić powiązanie usługi w kodzie).

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.

Wszystkie poniższe kroki konfiguracji można wykonać przy użyciu narzędzia edytora konfiguracji (SvcConfigEditor.exe).

Aby uzyskać kopię źródłową tego przykładu, zobacz BasicBinding.

Aby określić usługę BasicHttpBinding do użycia w celu skonfigurowania 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
    
    

    Uwaga

    Informacje o adresach lub powiązaniach nie są określone wewnątrz implementacji usługi. Ponadto kod nie musi być zapisywany w celu pobrania tych informacji z pliku konfiguracji.

  3. Utwórz plik Web.config, aby skonfigurować punkt końcowy dla programu CalculatorService , który używa .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. Utwórz plik Service.svc zawierający następujący wiersz i umieść go w katalogu wirtualnym usług Internet Information Services (IIS).

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

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

  1. Aby zmodyfikować jedną z domyślnych WSHttpBindingwartości właściwości elementu , utwórz nową nazwę konfiguracji powiązania — <binding name="Binding1"> w elemecie <wsHttpBinding> i ustaw nowe wartości atrybutów powiązania w tym elemecie powiązania. Aby na przykład zmienić domyślne wartości limitu czasu otwierania i zamykania z 1 minuty na 2 minuty, dodaj następujący kod do pliku konfiguracji.

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

Zobacz też