Compartir a través de


Actividad

En este tema, se describen los seguimientos de la actividad que se llevan a cabo en el modelo de seguimiento de Windows Communication Foundation (WCF). Las actividades procesan unidades 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 del mensaje. Los seguimientos para el error de descifrado del mensaje y la operación aparecen en la misma actividad, mostrando una correlación directa entre el error del descifrado y el error de la solicitud.

Configuración del seguimiento de actividades

En el motor WCF, se proporcionan actividades predefinidas para el procesamiento de aplicaciones (consulte Lista de actividades). También puede definir las actividades mediante programación para agrupar los seguimientos del usuario. Para obtener más información, consulte Emisión de seguimientos del código de usuario.

Para emitir seguimientos de actividades en tiempo de ejecución, utilice el valor ActivityTracing para que se use el origen de seguimientos System.ServiceModel u otros orígenes de seguimientos personalizados de WCF, tal y como se muestra en el siguiente código de configuración.

<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 en el ejemplo, consulte el tema Configuración del seguimiento.

Visualización de actividades

Para ver las actividades y su utilidad consulte Herramienta del 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 a entre sí actividades diferentes. 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 Service Trace Viewer proporciona dos vistas de actividades:

  • La vista de lista, donde se utiliza el id. de actividad para poner en correlación directa a los seguimientos que afectan a varios procesos. Los seguimientos de diferentes procesos, por ejemplo, cliente y servicio, pero con el mismo id. de actividad se agrupan en la misma actividad. Por consiguiente, un error que se produce en el servicio que, a continuación, produce un error en el cliente, se mostrarán ambos en la misma vista de actividades en la herramienta.

  • La vista de gráfico, donde las actividades se agrupan en función de los procesos. En esta vista, un cliente y un servicio con el mismo identificador de actividad tienen sus seguimientos en actividades diferentes. Para correlacionar actividades con el mismo id. de actividad en procesos diferentes, la herramienta muestra flujos de mensajes en las actividades relacionadas.

Para obtener más información y una vista gráfica de la herramienta del visor de seguimiento de servicio, consulte Herramienta del visor de seguimiento de servicio (SvcTraceViewer.exe) y Uso del visor de seguimiento de servicio para ver seguimientos correlacionados y solución de problemas.

Definición del ámbito de una actividad

Una actividad se define durante el diseño y denota una unidad lógica de trabajo. Los seguimientos emitidos con el mismo identificador de actividad están directamente relacionados, forman parte de la misma actividad. Debido a que una actividad puede cruzar los límites de extremos (una solicitud), se definen dos ámbitos para una actividad.

  • Ámbito Global, por aplicación. En este ámbito, la actividad se identifica por su identificador de actividad único globalmente 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, el identificador gAId se usa para identificar la actividad, junto con el nombre del origen de seguimiento donde se emiten los seguimientos de actividad y el id. de proceso. Este triplo constituye el id. de la actividad local: el IAId. El lAId se utiliza 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. El esquema que se usa comúnmente se denomina "E2E" (que significa "de extremo a extremo"). Este esquema incluye un identificador de 128 bits (gAId), el nombre del origen de seguimiento y el identificador de proceso. En código administrado, XmlWriterTraceListener emite seguimientos 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 gAId en TLS será evidente cuando los seguimientos se emitan utilizando un origen de seguimiento, como se muestra en el ejemplo siguiente.

TraceSource traceSource = new TraceSource("myTraceSource");  
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");  

El seguimiento emitido contendrá actualmente el gAId en TLS, el nombre del origen de seguimiento pasado como parámetro al constructor del origen de seguimiento y el identificador de proceso actual.

Duración de una actividad

En términos estrictos, la evidencia de una actividad se inicia la primera vez que se utiliza el identificador de actividad en un seguimiento emitido y finaliza la última vez que se utiliza en un seguimiento emitido. System.Diagnostics proporciona un conjunto predefinido de tipos de seguimiento, incluyendo Iniciar y Detener, para marcar explícitamente los límites de duración de la actividad.

  • Iniciar: 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. Ejemplos de comienzo de una nueva actividad incluyen la creación de un nuevo subproceso para el procesamiento o la entrada en un nuevo método público.

  • Detener: indica el fin 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. La finalización de un subproceso de procesamiento o la salida de un método cuyo comienzo se denotó con un seguimiento "Iniciar" constituyen dos ejemplos de detención de una actividad.

  • 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. Entre los ejemplos se incluye la detención de una actividad al llamar una función de biblioteca externa o al esperar un recurso como un puerto de finalización de E/S.

  • Reanudar: 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.

  • Transferir: debido a que algunas actividades comienzan a causa de otras o se relacionan otras, puede usarse un seguimiento "Transferir" para relacionarlas entre sí. Una transferencia registra la relación dirigida de una actividad a otra

Los seguimientos Iniciar y Detener no son críticos para la correlación. Sin embargo, pueden ayudar a aumentar el rendimiento, creación de perfiles y la validación de ámbito de las actividades.

Mediante el uso de estos tipos, las herramientas pueden optimizar la navegación a través de los registros de seguimiento para encontrar los eventos inmediatamente relacionados de la misma actividad, o eventos en actividades relacionadas si la herramienta sigue los seguimientos de la transferencia. Por ejemplo, las herramientas dejarán de analizar los registros para una actividad determinada cuando vean un seguimiento Iniciar/Detener.

Estos tipos de seguimiento también se pueden utilizar para la creación de perfiles. Los recursos utilizados entre los marcadores de inicio y detención representan el tiempo inclusivo de la actividad incluyendo 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.

Instrucciones para el uso de seguimiento de actividades

A continuación se muestra una guía sobre el uso de seguimientos ActivityTracing (Iniciar, Detener, Suspender, Reanudar y Transferir).

  • 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 proporcionar compatibilidad.

  • Cada método de WCF, tanto en el cliente como en el servidor, se limita cuando comienza una nueva actividad y, después (una vez que termina la tarea), cuando esta finaliza y se vuelve a la actividad ambiente.

  • Las actividades de larga duración (en curso) como realizar escuchas de conexiones o esperar mensajes se representan haciendo corresponder los marcadores de inicio/detención.

  • Las actividades activadas mediante el recibo o procesamiento de un mensaje se representan mediante límites de seguimiento.

  • Las actividades representan actividades, no necesariamente objetos. Una actividad se debería interpretar como: "esto es lo que sucedía cuando . . . (se produjo una emisión de seguimientos significativa)”.

Consulte también