Tech·Ed by raona

Tuesday, November 28, 2006

DEV311 - WCF: Managing WCF Services

Una nueva sesión de WCF a la que asistí... la tercera del tech·ed. Haber asistido a la primera era requisito casi obligatorio para entender algo de esta sesión.

Si las sesiones anteriores habían tratado del desarrollo de servicios bajo WCF, en esta se hablaría del tema del managment de esos servicios, esto es: como configurarlos, monitorizarlos y depurarlos.

Fue una sesión bastante light, que se puede resumir básicamente en los siguientes puntos:
  1. Modelo de configuración de WCF está basado en XML. El modelo XML es muy complejo, pero la herramienta visual WCF Config Editor ayuda mucho en este punto. Con esta herramienta se pueden configurar servicios, pero también activar temas realcionados con el diagnóstico (trazas, logs, perfcounters).
  2. WCF proporciona un proveedor de WMI integrado, por lo tanto cualquier herramienta de monitorización de WMI (Tivoli, MOM, ...) puede monitorizar servicios WCF.
  3. Los Diagnostical behaviours (activar/desactivar logs,...) se pueden modificar sin necesidad de reiniciar el servicio.
  4. WCF incorpora varios contadores de rendimiento (perfcounters) para las métricas más comunes. Existen contadores a nivel de servicio, endpoint y operación.
  5. Un servicio puede definir sus propios contadores de rendimiento. Esto permite crear contadores mixtos que correlen datos de negocio con datos de rendimiento.
  6. WCF incorpora hasta 5 niveles de trace. El trace de mensajes está disponible, sin que sea necesario instalar sniffers ni ninguna herramienta parecida.
  7. El trace de mensajes permite correlar llamadas entre servicios: se añade automáticamente un ActivityID a cada mensaje que es el mismo para llamadas encadenadas (es decir si un cliente envia un mensaje al servicio SA y este como consecuencia envía un mensaje a otro servicio SB, los dos mensajes tendrán el mismo ActivityID)
  8. Existe una herramienta visual para tratar con los logs.
  9. WCF al ser un framework no incorpora herramientas de Governabilidad (Governance), aunque da facilidades para que estas sean construídas (en este punto hizo una demo de un servicio que monitorizaba continuamente un fichero de configuración (no el suyo propio) y si este cambiaba, modificaba su fichero de configuración para que fuese igual al modificado y se reiniciaba. Eso permitiría tener n servicios que compartiesen un fichero (o parte de un fichero) de configuración).
Finalmente terminó con unos consejos, los más destacables para mi fueron:
  1. Usar contratos dúplex para que los servicios puedan informar de cambios en su estado de salud, a las aplicaciones sin que esas deban estar preguntando continuamente.
  2. Vigilar la seguridad de WMI. El proveedor WMI de WCF permite descubrir todos los servicios activos, lo que podría derivar en ataques de floodeo.
  3. Proteger los ficheros de logs generados. Contienen mucha información.

0 Comments:

Post a Comment

<< Home