Aracılığıyla paylaş


Nasıl yapılır: Yapılandırmada Hizmet Bağlama Belirtme

Bu örnekte, temel hesap makinesi hizmeti için bir ICalculator sözleşme tanımlanır, hizmet sınıfında uygulanır CalculatorService ve ardından uç noktası Web.config dosyasında yapılandırılır ve burada hizmetin tarafından kullanıldığı BasicHttpBindingbelirtilir. Yapılandırma yerine kod kullanarak bu hizmetin nasıl yapılandırılacağının açıklaması için bkz . Nasıl yapılır: Kodda Hizmet Bağlaması Belirtme.

Bağlama ve adres bilgilerini kodda kesinlik temelli olarak değil, yapılandırmada bildirim temelli olarak belirtmek genellikle en iyi yöntemdir. Dağıtılan bir hizmetin bağlamaları ve adresleri genellikle hizmet geliştirilirken kullanılanlardan farklı olduğundan, kodda uç noktaları tanımlamak genellikle pratik değildir. Daha genel olarak bağlama ve adresleme bilgilerinin kod dışında tutulması, uygulamanın yeniden derlenmesine veya yeniden dağıtılmasına gerek kalmadan bunların değişmesine olanak tanır.

Aşağıdaki yapılandırma adımlarının tümü Yapılandırma Düzenleyicisi Aracı (SvcConfigEditor.exe) kullanılarak yapılabilir.

Bu örneğin kaynak kopyası için bkz . BasicBinding.

Hizmeti yapılandırmak için kullanılacak TemelHttpBinding'i belirtmek için

  1. Hizmet türü için bir hizmet sözleşmesi tanımlayın.

    [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. Hizmet sözleşmesini bir hizmet sınıfında uygulayın.

    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
    
    

    Not

    Hizmet uygulaması içinde adres veya bağlama bilgileri belirtilmez. Ayrıca, yapılandırma dosyasından bu bilgileri getirmek için kodun yazılması gerekmez.

  3. kullanan WSHttpBindingiçin bir uç nokta yapılandırmak üzere CalculatorService bir Web.config dosyası oluşturun.

    <?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. Aşağıdaki satırı içeren bir Service.svc dosyası oluşturun ve bunu Internet Information Services (IIS) sanal dizininize yerleştirin.

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

Bağlama özelliklerinin varsayılan değerlerini değiştirmek için

  1. öğesinin varsayılan özellik değerlerinden WSHttpBindingbirini değiştirmek için, wsHttpBinding> öğesi içinde <yeni bir bağlama yapılandırma adı <binding name="Binding1"> oluşturun ve bu bağlama öğesindeki bağlamanın öznitelikleri için yeni değerleri ayarlayın. Örneğin, varsayılan açma ve kapatma zaman aşımı değerlerini 1 dakika ile 2 dakika arasında değiştirmek için yapılandırma dosyasına aşağıdakileri ekleyin.

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

Ayrıca bkz.