Compartir vía


Comportamiento predeterminado del servicio

En el ejemplo Predeterminado se muestra cómo se pueden configurar las opciones de comportamiento del servicio. La muestra se basa en Primeros pasos, que implementa el contrato de servicio ICalculator. En este ejemplo se definen explícitamente comportamientos de servicio y comportamientos de operación mediante los ServiceBehaviorAttribute atributos y OperationBehaviorAttribute . Puede configurar comportamientos en archivos de configuración o de forma imperativa en el código (como se muestra en este ejemplo).

En este ejemplo, el cliente es una aplicación de consola (.exe) y los Servicios de Internet Information Server (IIS) hospedan el servicio.

Nota:

El procedimiento de instalación y las instrucciones de compilación de este ejemplo se encuentran al final de este tema.

La clase de servicio especifica comportamientos con el ServiceBehaviorAttribute y el OperationBehaviorAttribute, como se muestra en el ejemplo de código siguiente. Todos los valores especificados son los valores predeterminados.

[ServiceBehavior(
    AutomaticSessionShutdown=true,
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    IncludeExceptionDetailInFaults=false,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
    [OperationBehavior(
        TransactionAutoComplete=true,
        TransactionScopeRequired=false,
        Impersonation=ImpersonationOption.NotAllowed)]
    public double Add(double n1, double n2)
    {
        System.Threading.Thread.Sleep(1600);
        return n1 + n2;
    }
    ...
}

Los comportamientos de servicio se especifican con el ServiceBehaviorAttribute atributo . En la tabla siguiente se describen algunos de estos comportamientos.

Comportamiento del servicio Descripción
AutomaticSessionShutdown Cierra automáticamente una sesión en la solicitud del cliente.
ConcurrencyMode Especifica el modo de simultaneidad para cada instancia de servicio.
InstanceContextMode Especifica el modo de contexto de instancia.
UseSynchronizationContext Determina si se va a usar el contexto de sincronización proporcionado, si se establece uno. Úselo cuando desee controlar el uso de un WindowsFormsSynchronizationContext en aplicaciones de Windows Forms.
IncludeExceptionDetailInFaults Determina si las excepciones generales de ejecución no controladas se van a convertir en un Fault<string> y a enviarse como un mensaje de error.
TransactionIsolationLevel Especifica el nivel de aislamiento de las transacciones.
ValidateMustUnderstand Determina si los encabezados de mensaje inesperados provocan una condición de error.

Los comportamientos de la operación se especifican mediante el OperationBehaviorAttribute atributo . En la tabla siguiente se describen algunos de estos comportamientos.

Comportamiento de la operación Descripción
TransactionAutoComplete Determina si la finalización de la operación de servicio confirma la transacción actual.
TransactionScopeRequired Determina si la operación del servicio da de alta en una transacción fluida del cliente.
Impersonation Determina si la operación de servicio suplanta la identidad del autor de la llamada.
ReleaseInstanceMode Determina si las instancias del servicio se reciclan en el inicio o final de la llamada de operación de servicio.

Al ejecutar el ejemplo, las solicitudes de operación y las respuestas se muestran en la ventana de la consola del cliente. El retraso entre las llamadas es el resultado de las llamadas a System.Threading.Thread.Sleep() realizadas en las operaciones de servicio. El resto de los ejemplos de comportamiento explican estos comportamientos con más detalle. Presione ENTRAR en la ventana del cliente para apagar el cliente.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Para configurar, compilar y ejecutar el ejemplo

  1. Asegúrese de que ha realizado el procedimiento de instalación única para los ejemplos de Windows Communication Foundation.

  2. Para compilar el código C# o Visual Basic .NET Edition de la solución, siga las instrucciones de Building the Windows Communication Foundation Samples.

  3. Para ejecutar el ejemplo en una configuración de una máquina única o entre máquinas, siga las instrucciones de Ejecución de los ejemplos de Windows Communication Foundation.