Compartir a través de


Comportamiento de servicio predeterminado

El ejemplo predeterminado muestra cómo se pueden configurar los valores del comportamiento de servicio. El ejemplo se basa en la Introducción, que implementa el contrato de servicio ICalculator. Este ejemplo define explícitamente los comportamientos del servicio y de la operación mediante los atributos ServiceBehaviorAttribute y OperationBehaviorAttribute. Puede configurar los comportamientos en archivos de configuración o imperativamente en 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 ServiceBehaviorAttribute y OperationBehaviorAttribute, tal y como se muestra en el ejemplo de código siguiente. Todos los valores especificados son 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 del servicio se especifican con el atributo ServiceBehaviorAttribute. La tabla siguiente describe algunos de estos comportamientos.

Comportamiento de servicio Descripción
AutomaticSessionShutdown Se cierra automáticamente una sesión cuando lo solicita el cliente.
ConcurrencyMode Especifica el modo de simultaneidad para cada instancia del servicio.
InstanceContextMode Especifica el modo de contexto de instancia.
UseSynchronizationContext Determina si utilizar el contexto de sincronización proporcionado, si se ha establecido uno. Utilice esto cuando desee controlar si usar un WindowsFormsSynchronizationContext en aplicaciones de Windows Forms.
IncludeExceptionDetailInFaults Determina si las excepciones de ejecución no controladas generales se convertirán en Fault<string> y se enviará como un mensaje de error.
TransactionIsolationLevel Especifica el nivel de aislamiento de las transacciones.
ValidateMustUnderstand Determina si los encabezados del mensaje inesperados producen una condición de error.

Los comportamientos de la operación se especifican utilizando el atributo OperationBehaviorAttribute. La tabla siguiente describe algunos de estos comportamientos.

Comportamiento de la operación Descripción
TransactionAutoComplete Determina si la realización de la operación del 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 y respuestas de la operación 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 del servicio. El resto de los ejemplos de comportamiento explica con más detalle estos comportamientos. Presione ENTRAR en la ventana de cliente para cerrar 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.

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 sola máquina o de varias máquinas, siga las instrucciones que se indican en Ejecución de los ejemplos de Windows Communication Foundation.