El Behaivor refleja el comportamiento de los servicios en tiempo de ejecución, estos tipos de comportamiento pueden ser la instanciación, concurrencia, Throlling, manejo de errores,Metadata, Tiempo de vida del servicio, Seguridad y transacciones.
Todos estos comportamiento pueden ser especificados como parámetros del contrato, en archivos de configuración o mediante la codificación, es decir, como siempre en WCF
Si nos fijamos en la instanciación, este comportamiento determina como se instancian los contratos de un servicio WCF, esta instanciación puede ser de los tipos:
- Singleton: una instancia atiende a todos los clientes.
- Por llamada: se crea una instancia de clase por cada mensaje de petición y luego se destruye.
- Sesión privada: se crea una instancia de clase por cada solicitud de un cliente.
- Sesión compartida: idem anterior pero los clientes pueden compartir una instancia.
En concurrencia vamos a señalar como se relacionan las clases del contrato con los Threads, estas pueden ser
- Simple: especifica que el código del objeto servicio no puede ser ejecuto por más de un thread al mismo tiempo.
- Múltiple: especifica que el código del objeto servicio puede ser ejecutado por múltiples threads al mismo tiempo por lo que se deben establecer mecanismos de exclusión mutua.
- Reentrante: especifica que el código del objeto servicio no puede ser ejecutado por más de un thread al mismo tiempo. Es decir una operación recibe y procesa de a un mensaje por vez y se bloquea. Si durante ese proceso se produce una llamada fuera de la operación, el mensaje pierde el bloqueo y la operación se libera, durante esta fase los datos no locales a la operación podrían ser modificados. Cuando la llamada vuelva, el mensaje original recupera el bloqueo y se continúa procesando hasta que finalice o se realice otra llamada hacia fuera, al volver también hay que asegurarse que los datos no locales sigan siendo válidos.
En Manejo de errores determinamos si los errores pueden ser procesados por el programador o por el propio framework.
En Metadata, se establece la publicación de los metadatos que nos brinda el servicio
Un servicio puede controlar el tiempo de vida de las sesiones de un cliente, especificando las operaciones de inicio y fin de sesión siendo otro behaivor .
Con la Seguridad establecemos la confidencialidad e integridad de los mensajes, autenticación, autorización, auditoría y detección de reintentos.
A traves de las Transacciones especificamos si un servicio aceptará transacciones y el cliente controla el alcance y el tiempo de vida de una transacción
Como podemos ver tenemos una gran cantidad de comportamientos que podemos utilizar para nuestras aplicaciones de WCF y que debemos de saber cuando y donde utilizarlos.
Por ultimo decir que seguro que todos coneceis que WCF trae la herramienta SvcConfigEditor que brinda una interfaz gráfica para editar archivos de configuración que nos va a permitir configurar d euna manera sencilla todos los puntos anteriores que hemos dicho