Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describen los seguimientos de actividad en el modelo de seguimiento de Windows Communication Foundation (WCF). Las actividades son unidades de procesamiento que ayudan al usuario a reducir el ámbito de un error. Los errores que se producen en la misma actividad están directamente relacionados. Por ejemplo, se produce un error en una operación porque se ha producido un error en el descifrado de mensajes. Los seguimientos de la operación y el error de descifrado de mensajes aparecen en la misma actividad, lo que muestra la correlación directa entre el error de descifrado y el error de solicitud.
Configuración del seguimiento de actividad
WCF proporciona actividades predefinidas para procesar aplicaciones (vea Lista de actividades). También puede definir actividades mediante programación para agrupar seguimientos de usuario. Para obtener más información, consulte Emisión de seguimientos del código de usuario.
Para emitir seguimientos de actividad en tiempo de ejecución, use la configuración ActivityTracing para el origen de seguimiento System.ServiceModel, u otros orígenes de seguimiento personalizados o de WCF, como se muestra en el código de configuración siguiente.
<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
Para obtener más información sobre el elemento de configuración y los atributos que se usan, consulte el tema Configuración del seguimiento .
Ver actividades
Puede ver las actividades y su utilidad en la herramienta Visor de seguimiento de servicio (SvcTraceViewer.exe). Cuando ActivityTracing está habilitado, esta herramienta toma los seguimientos y los ordena en función de la actividad. También puede ver las transferencias de seguimientos. Una transferencia de seguimiento indica cómo se relacionan las distintas actividades entre sí. Puede ver que una actividad determinada hizo que se iniciara otra. Por ejemplo, una solicitud del mensaje inició un protocolo de enlace de seguridad para obtener un Token de conversación segura.
Correlación de actividades en Service Trace Viewer
La herramienta Visor de seguimiento de servicio proporciona dos vistas de las actividades:
Vista de lista , donde se usa el identificador de actividad para correlacionar directamente los seguimientos entre procesos. Trazas de diferentes procesos, por ejemplo, de cliente y servicio, pero que comparten el mismo identificador de actividad, se agrupan en la misma actividad. Por lo tanto, un error que se produzca en el servicio y que posteriormente provoque un error en el cliente aparecerá en la misma vista de actividad de la herramienta.
Vista gráfico , donde las actividades se agrupan por procesos. En esta vista, un cliente y un servicio con el mismo identificador de actividad tienen sus rastros en diferentes actividades. Para correlacionar las actividades con el mismo identificador de actividad en distintos procesos, la herramienta muestra los flujos de mensajes entre las actividades relacionadas.
Para obtener más información y ver una vista gráfica de la herramienta Visor de seguimiento de servicio, consulte Service Trace Viewer Tool (SvcTraceViewer.exe) y Using Service Trace Viewer for View Correlated Traces and Troubleshooting (Uso de Service Trace Viewer para ver seguimientos correlacionados y solución de problemas).
Definición del ámbito de una actividad
Una actividad se define en tiempo de diseño y denota una unidad lógica de trabajo. Las trazas emitidas con el mismo identificador de actividad están directamente relacionadas, forman parte de la misma actividad. Dado que una actividad puede cruzar los límites del punto de conexión (una solicitud), se definen dos ámbitos para una actividad.
Ámbito
Global, por aplicación. En este ámbito, la actividad se identifica mediante su identificador de actividad único global de 128 bits, el gAId. El gAId es lo que se propaga por los puntos de conexión.Ámbito
Local, por extremo. En este ámbito, la actividad se identifica mediante su gAId, junto con el nombre de origen de seguimiento que emite los seguimientos de actividad y el identificador de proceso. Este triplete constituye el identificador de actividad local, lAId. El lAId se usa para definir los límites (locales) de una actividad.
Esquema de seguimiento
Los seguimientos se pueden emitir utilizando cualquier esquema y entre plataformas de Microsoft. "e2e" (para "End to End") es un esquema usado habitualmente. Este esquema incluye un identificador de 128 bits (gAId), el nombre del origen de seguimiento y el identificador de proceso. En el código administrado, XmlWriterTraceListener emite rastros en el esquema E2E.
Los programadores pueden establecer el AID que se emite con un seguimiento estableciendo la propiedad ActivityId con un Guid en Almacenamiento local para el subproceso (TLS). En el siguiente ejemplo se muestra cómo hacerlo.
// set the current Activity ID to a new GUID.
CorrelationManager.ActivityId = Guid.NewGuid();
Establecer el gAId en TLS será evidente cuando se emiten rastros mediante una fuente de rastreo, como se muestra en el ejemplo siguiente.
TraceSource traceSource = new TraceSource("myTraceSource");
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");
El rastro que se emita contendrá el gAId que se encuentra actualmente en TLS, el nombre de la fuente de rastreo pasado como parámetro al constructor de la fuente de rastreo y el ID del proceso actual.
Duración de una actividad
En términos más estrictos, la evidencia de una actividad inicia la primera vez que se usa el identificador de actividad en un seguimiento emitido y finaliza la última vez que se usa en un seguimiento emitido. Un conjunto predefinido de tipos de seguimiento se proporciona mediante System.Diagnostics, incluido Start y Stop, para marcar explícitamente los límites de duración de la actividad.
Inicio: indica el principio de una actividad. El seguimiento "Iniciar" se usa para registrar el comienzo de un nuevo hito de procesamiento. Contiene un nuevo id. de actividad para un origen de seguimiento determinado en un proceso determinado, excepto cuando el id. de actividad se propaga por los extremos, en cuyo caso vemos un "Iniciar" por extremo. Algunos ejemplos de inicio de una nueva actividad incluyen la creación de un nuevo hilo para procesamiento o el uso de un nuevo método público.
Stop: indica el final de una actividad. El seguimiento "Detener" se usa para registrar la finalización de un hito de procesamiento existente. Contiene un id. de actividad existente para un origen de seguimiento de traza determinado en un proceso concreto, excepto cuando el id. de actividad se propaga por los extremos, en cuyo caso vemos un "Stop" por cada extremo. Algunos ejemplos de detener una actividad incluyen finalizar un subproceso de procesamiento o salir de un método cuyo inicio fue marcado con un rastro "Start".
Suspender: indica la suspensión del procesamiento de una actividad. En el seguimiento "Suspender" se almacena un id. de actividad existente cuyo procesamiento está a la espera de reanudarse más adelante. Ningún seguimiento se emite con este id. entre los eventos Suspender y Reanudar del origen de seguimientos actual. Algunos ejemplos incluyen pausar una actividad al llamar a una función de biblioteca externa o al esperar a un recurso como un puerto de finalización de E/S.
Reanudación: indica la reanudación del procesamiento de una actividad. El seguimiento "Reanudar" contiene un id. de actividad existente cuyo último seguimiento, que se emitió desde el origen de seguimiento actual, fue un seguimiento "Suspender". Entre los ejemplos se incluye el volver desde una llamada a una función de biblioteca externa o cuando se ha señalado la reanudación del procesamiento por un recurso como un puerto de finalización de E/S.
Transferencia: dado que algunas actividades son causadas por otras, o se relacionan con otras, las actividades pueden estar relacionadas con otras actividades a través de seguimientos de "Transferencia". Una transferencia registra la relación dirigida de una actividad a otra.
Las trazas de inicio y detención no son críticas para la correlación. Sin embargo, pueden ayudar a aumentar el rendimiento, la generación de perfiles y la validación del ámbito de actividad.
Usando estos tipos de registros, las herramientas pueden optimizar la navegación por los registros de seguimiento para encontrar los eventos inmediatamente relacionados con la misma actividad, o eventos en actividades relacionadas si la herramienta sigue las trazas de transferencia. Por ejemplo, las herramientas dejarán de analizar los registros de una actividad determinada cuando vean un rastreo Inicio/Parada.
Estos tipos de seguimiento también se pueden usar para la generación de perfiles. Los recursos consumidos entre los marcadores de inicio y detención representan el tiempo inclusivo de la actividad, incluidas las actividades lógicas contenidas. Restar los intervalos de tiempo entre los seguimientos Suspender y Reanudar proporciona la duración real de la actividad.
El seguimiento Detener también es particularmente útil para validar el ámbito de las actividades implementadas. Si algunos seguimientos del procesamiento aparecen después del seguimiento Detener en lugar de dentro de una actividad determinada, esto puede sugerir un defecto en el código.
Directrices para usar el seguimiento de actividad
A continuación se muestra una guía sobre cómo usar los seguimientos de ActivityTracing (Inicio, Parada, Suspensión, Reanudación y Transferencia).
El seguimiento es un gráfico cíclico dirigido, no un árbol. Puede devolver el control a una actividad que generó una actividad.
Una actividad denota un límite de procesamiento que puede ser significativo para el administrador del sistema o para la compatibilidad.
Cada método WCF, tanto en el cliente como en el servidor, se limita iniciando una nueva actividad y después (después de realizar el trabajo) finalizando la nueva actividad y volviendo a la actividad ambiente.
Las actividades de larga duración (en curso), como escuchar conexiones o esperar mensajes, se representan mediante los marcadores de inicio y detención correspondientes.
Las actividades desencadenadas por la recepción o el procesamiento de un mensaje se representan mediante límites de seguimiento.
Las actividades representan actividades, no necesariamente objetos. Una actividad debe interpretarse como "esto estaba ocurriendo cuando . . . (se produjo una emisión de seguimientos significativa)”.