Cara: Menentukan Pengikatan Layanan dalam Konfigurasi

Dalam contoh ini, kontrak ICalculator didefinisikan untuk layanan kalkulator dasar, layanan diimplementasikan di kelas CalculatorService, dan kemudian titik akhirnya dikonfigurasi dalam file Web.config, di mana ditentukan bahwa layanan menggunakan BasicHttpBinding. Untuk deskripsi tentang cara mengonfigurasi layanan ini menggunakan kode alih-alih konfigurasi, lihat Cara: Menentukan Pengikatan Layanan dalam Kode.

Biasanya ini adalah praktik terbaik untuk menentukan informasi pengikatan dan alamat secara deklaratif dalam konfigurasi daripada secara imperatif dalam kode. Menentukan titik akhir dalam kode biasanya tidak praktis karena pengikatan dan alamat untuk layanan yang disebarkan biasanya berbeda dari yang digunakan saat layanan sedang dikembangkan. Lebih umumnya, menjaga informasi pengikatan dan alamat keluar dari kode memungkinkan titik akhit untuk berubah tanpa harus mengompilasi ulang atau menyebarkan ulang aplikasi.

Semua langkah konfigurasi berikut dapat dilakukan menggunakan Alat Editor Konfigurasi (SvcConfigEditor.exe).

Untuk salinan sumber contoh ini, lihat BasicBinding.

Untuk menentukan BasicHttpBinding yang akan digunakan untuk mengonfigurasi layanan

  1. Tentukan kontrak layanan untuk jenis layanan.

    [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. Implementasikan kontrak layanan di kelas layanan.

    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
    
    

    Catatan

    Informasi alamat atau pengikatan tidak ditentukan di dalam implementasi layanan. Selain itu, kode tidak harus ditulis untuk mengambil informasi tersebut dari file konfigurasi.

  3. Buat file Web.config untuk mengonfigurasi titik akhir untuk CalculatorService yang menggunakan 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. Buat file Service.svc yang berisi baris berikut dan letakkan di direktori virtual Layanan Informasi Internet (IIS) Anda.

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

Untuk mengubah nilai default properti pengikatan

  1. Untuk mengubah salah satu nilai properti default WSHttpBinding, buat nama konfigurasi pengikatan baru - <binding name="Binding1"> - dalam elemen <wsHttpBinding> dan atur nilai baru untuk atribut pengikatan dalam elemen pengikatan ini. Misalnya, untuk mengubah nilai batas waktu buka dan tutup default 1 menit menjadi 2 menit, tambahkan yang berikut ini ke file konfigurasi.

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

Lihat juga