Compartir a través de


Cómo: Especificar un enlace de servicio en el código

En este ejemplo, se define un contrato de ICalculator para un servicio de la calculadora, el servicio se implementa en la clase CalculatorService y a continuación, su extremo se define mediante código, donde se especifica que el servicio debe utilizar la clase BasicHttpBinding.

Normalmente es el mejor procedimiento para especificar el enlace y la información de dirección de forma declarativa en configuración en lugar de hacerlo de forma imperativa en código. Normalmente, no resulta muy práctico definir los extremos en el código ya que los enlaces y las direcciones de un servicio implementado son, por lo general, diferentes de los utilizados durante el desarrollo del servicio. Más generalmente, manteniendo el enlace y la información de dirección fuera del código permite cambiarlos sin tener que volver a compilar o implementar la aplicación.

Para una descripción de cómo configurar este servicio utilizando elementos de configuración en lugar de código, vea Cómo: Especificar un enlace de servicio en la configuración.

Para especificar mediante código que se use BasicHttpBinding para el servicio

  1. Defina un contrato de servicios para el tipo de servicio.

      <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
    
    [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);
    }
    
  2. Implemente el contrato de servicios en una clase de servicio.

    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
    
    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;
       }
    } 
    
  3. En la aplicación de alojamiento, cree la dirección base que han de utilizar el servicio y el enlace con el servicio.

    ' Specify a base address for the service
    Dim baseAddress = "https://localhost/CalculatorService"
    ' Create the binding to be used by the service.
    
    Dim binding1 As New BasicHttpBinding()
    
    // Specify a base address for the service
    
    String baseAddress = "https://localhost/CalculatorService";
    // Create the binding to be used by the service.
    
    BasicHttpBinding binding1 = new BasicHttpBinding();
    
  4. Cree el host para el servicio, agregue el extremo y, a continuación, abra el host.

    
    Using host As New ServiceHost(GetType(CalculatorService))
        With host
            .AddServiceEndpoint(GetType(ICalculator), _
                                    binding1, _
                                    baseAddress)
    
            host.Open()
        End With
    End Using
    
    
    using(ServiceHost host = new ServiceHost(typeof(CalculatorService)))
    {
        host.AddServiceEndpoint(typeof(ICalculator),binding1, baseAddress);
    
    
    
        host.Open();
    }    
    

Para modificar los valores predeterminados de las propiedades de enlace

  1. Para modificar uno de los valores predeterminados de propiedades de la clase BasicHttpBinding, establezca el valor de la propiedad del enlace en el nuevo valor antes de crear el host. Por ejemplo, para cambiar los valores predeterminados de tiempos de espera de apertura y cierre de 1 a 2 minutos, utilice lo siguiente.

    Dim modifiedCloseTimeout As New TimeSpan(0, 2, 0)
    binding1.CloseTimeout = modifiedCloseTimeout
    
    
    TimeSpan modifiedCloseTimeout = new TimeSpan(00, 02, 00);
    binding1.CloseTimeout = modifiedCloseTimeout;
    

Vea también

Conceptos

Utilización de enlaces para configurar servicios y clientes
Especificación de una dirección de extremo