Procedimiento para especificar un enlace de servicio en la configuraciónHow to: Specify a Service Binding in Configuration

En este ejemplo, se define un contrato ICalculator para un servicio de calculadora básico; el servicio se implementa en la clase CalculatorService y, después, su punto de conexión se configura en el archivo Web.config, donde se especifica que el servicio usa BasicHttpBinding.In this example, an ICalculator contract is defined for a basic calculator service, the service is implemented in the CalculatorService class, and then its endpoint is configured in the Web.config file, where it is specified that the service uses the BasicHttpBinding. Para obtener una descripción de cómo configurar este servicio con código en lugar de una configuración, consulte cómo: Especifique un enlace de servicio enel código.For a description of how to configure this service using code instead of a configuration, see How to: Specify a Service Binding in Code.

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.It is usually the best practice to specify the binding and address information declaratively in configuration rather than imperatively in code. Normalmente, no resulta muy práctico definir los puntos de conexión 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.Defining endpoints in code is usually not practical because the bindings and addresses for a deployed service are typically different from those used while the service is being developed. Más generalmente, manteniendo el enlace y la información de dirección fuera del código permite cambiarlos sin tener que recompilar o implementar la aplicación.More generally, keeping the binding and addressing information out of the code allows them to change without having to recompile or redeploy the application.

Todos los pasos de configuración siguientes se pueden llevar a cabo mediante la herramienta editor de configuración (SvcConfigEditor. exe).All of the following configuration steps can be undertaken using the Configuration Editor Tool (SvcConfigEditor.exe).

Para la copia de origen de este ejemplo, consulte BasicBinding.For the source copy of this example, see BasicBinding.

Para especificar BasicHttpBinding para utilizarlo para configurar el servicioTo specify the BasicHttpBinding to use to configure the service

  1. Defina un contrato de servicios para el tipo de servicio.Define a service contract for the type of service.

    [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. Implemente el contrato de servicios en una clase de servicio.Implement the service contract in a service 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;
       }
    } 
    
    
    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
    
    

    Nota

    La información de dirección o enlace no se especifica dentro de la implementación del servicio.Address or binding information is not specified inside the implementation of the service. Por lo tanto, el código no tiene que escribirse para recuperar esa información del archivo de configuración.Also, code does not have to be written to fetch that information from the configuration file.

  3. Cree un archivo Web.config para configurar un punto de conexión para CalculatorService que utiliza WSHttpBinding.Create a Web.config file to configure an endpoint for the CalculatorService that uses the WSHttpBinding.

    <?xml version="1.0" encoding="utf-8" ?>  
    <configuration>  
      <system.serviceModel>  
        <services>  
          <service name=" CalculatorService" >  
            <endpoint   
            <!-- 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. -->  
                address=""   
            <!-- Specify the binding type -->  
                binding="wsHttpBinding"  
            <!-- 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. -->  
                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. Cree un archivo Service.svc que contenga la línea siguiente y colóquelo en su directorio virtual de Internet Information Services (IIS).Create a Service.svc file that contains the following line and place it in your Internet Information Services (IIS) virtual directory.

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

Para modificar los valores predeterminados de las propiedades de enlaceTo modify the default values of the binding properties

  1. Para modificar uno de los valores de propiedad predeterminados de WSHttpBinding, cree un nombre de configuración de enlace nuevo (en el <binding name="Binding1"> <elemento wsHttpBinding > y establezca los nuevos valores para los atributos del enlace en este enlace). Element.To modify one of the default property values of the WSHttpBinding, create a new binding configuration name - <binding name="Binding1"> - within the <wsHttpBinding> element and set the new values for the attributes of the binding in this binding element. Por ejemplo, para cambiar los valores predeterminados de abrir y cerrar el tiempo de espera de 1 minuto a 2 minutos, agregue el siguiente al archivo de configuración.For example, to change the default open and close timeout values of 1 minute to 2 minutes, add the following to the configuration file.

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

Vea tambiénSee also