Dela via


Anvisningar: Ange en tjänstbindning i konfigurationen

I det här exemplet definieras ett ICalculator kontrakt för en grundläggande kalkylatortjänst, tjänsten implementeras i CalculatorService klassen och sedan konfigureras dess slutpunkt i filen Web.config, där det anges att tjänsten använder BasicHttpBinding. En beskrivning av hur du konfigurerar den här tjänsten med hjälp av kod i stället för en konfiguration finns i Så här anger du en tjänstbindning i kod.

Det är vanligtvis bästa praxis att ange bindnings- och adressinformationen deklarativt i konfigurationen snarare än att absolut i kod. Det är vanligtvis inte praktiskt att definiera slutpunkter i kod eftersom bindningar och adresser för en distribuerad tjänst vanligtvis skiljer sig från de som används när tjänsten utvecklas. Mer allmänt gör det möjligt för dem att ändra bindningen och adresseringsinformationen utan att behöva kompilera om eller distribuera om programmet.

Alla följande konfigurationssteg kan utföras med hjälp av konfigurationsredigeraren (SvcConfigEditor.exe).

Källkopian av det här exemplet finns i BasicBinding.

Så här anger du den BasicHttpBinding som ska användas för att konfigurera tjänsten

  1. Definiera ett tjänstkontrakt för typen av tjänst.

    [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. Implementera tjänstkontraktet i en tjänstklass.

    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
    
    

    Kommentar

    Adress- eller bindningsinformation anges inte i implementeringen av tjänsten. Dessutom behöver koden inte skrivas för att hämta den informationen från konfigurationsfilen.

  3. Skapa en Web.config-fil för att konfigurera en slutpunkt för som CalculatorService använder 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. Skapa en Service.svc-fil som innehåller följande rad och placera den i din virtuella IIS-katalog (Internet Information Services).

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

Ändra standardvärdena för bindningsegenskaperna

  1. Om du vill ändra ett av standardegenskapsvärdena WSHttpBindingför skapar du ett nytt bindningskonfigurationsnamn – <binding name="Binding1"> – i elementet <wsHttpBinding och anger de nya värdena för bindningens attribut i det här bindningselementet> . Om du till exempel vill ändra standardvärdena öppna och stänga tidsgränser på 1 minut till 2 minuter lägger du till följande i konfigurationsfilen.

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

Se även