Megosztás a következőn keresztül:


Útmutató: Szolgáltatáskötés megadása a konfigurációban

Ebben a példában egy ICalculator szerződés definiálva van egy alapszintű számológép szolgáltatáshoz, a szolgáltatás az osztályban CalculatorService lesz implementálva, majd a végpontja a Web.config fájlban van konfigurálva, ahol meg van adva, hogy a szolgáltatás a BasicHttpBinding. A szolgáltatás konfiguráció helyett kód használatával történő konfigurálásának leírását a Következő témakörben találhatja meg: Szolgáltatáskötés megadása a Kódban.

Általában ajánlott a kötési és címadatokat deklaratív módon megadni a konfigurációban, nem pedig a kódban. A végpontok kódban való definiálása általában nem praktikus, mivel az üzembe helyezett szolgáltatások kötései és címei általában eltérnek a szolgáltatás fejlesztése során használtaktól. Általánosságban elmondható, hogy a kötés és az információk kódon kívüli kezelése lehetővé teszi a módosítást anélkül, hogy újrafordítanák vagy újra üzembe kellene helyezniük az alkalmazást.

Az alábbi konfigurációs lépések mindegyike a Konfigurációszerkesztő eszközzel (SvcConfigEditor.exe) végezhető el.

A példa forráspéldányát lásd : BasicBinding.

A szolgáltatás konfigurálásához használandó BasicHttpBinding megadása

  1. Szolgáltatási szerződés definiálása a szolgáltatás típusához.

    [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. A szolgáltatási szerződés implementálása egy szolgáltatásosztályban.

    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
    
    

    Feljegyzés

    A cím- vagy kötésadatok nincsenek megadva a szolgáltatás implementációja során. Emellett a kódot nem kell írni ahhoz, hogy lekérje ezeket az információkat a konfigurációs fájlból.

  3. Hozzon létre egy Web.config fájlt, amely konfigurálja a végpontot WSHttpBindingaz CalculatorService azt használó számára.

    <?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. Hozzon létre egy Service.svc fájlt, amely a következő sort tartalmazza, és helyezze el az Internet Information Services (IIS) virtuális könyvtárában.

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

A kötés tulajdonságainak alapértelmezett értékeinek módosítása

  1. A kötés egyik alapértelmezett tulajdonságértékének WSHttpBindingmódosításához hozzon létre egy új kötéskonfigurációs nevet – a <binding name="Binding1"> wsHttpBinding> elemen belül<, és állítsa be a kötés attribútumainak új értékeit ebben a kötéselemben. Ha például az alapértelmezett 1 perces és 2 perces időtúllépési időtúllépési értékeket szeretné módosítani, adja hozzá a következőt a konfigurációs fájlhoz.

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

Lásd még