Introducción
Si tienes una aplicación legacy basada en Windows Forms WinForms y quieres añadir observabilidad moderna este artículo explica cómo integrar trazas OpenTelemetry en .NET Framework y enviarlas al Aspire Dashboard de .NET usando únicamente un contenedor Docker ligero y unas pocas líneas de código. OpenTelemetry aporta una forma neutral de proveedor para capturar telemetría y el Aspire Dashboard ofrece una interfaz limpia para inspeccionar trazas de forma local, ideal para aplicaciones de escritorio antiguas.
Por qué usar Aspire Dashboard con aplicaciones legacy
Las plataformas de observabilidad modernas a veces parecen inalcanzables para aplicaciones de escritorio antiguas. Aspire Dashboard permite ver trazas localmente sin necesidad de infraestructuras complejas y facilita el diagnóstico. Combinado con OpenTelemetry puedes instrumentar el código de forma portable y abrir la puerta a servicios avanzados como ingesta en la nube o integración con pipelines de observabilidad en AWS y Azure.
Retos principales
Los dos retos principales son configurar OpenTelemetry y Aspire Dashboard para funcionar con .NET Framework 4.7.2 y añadir trazas de forma manual ya que la auto instrumentación no está disponible para aplicaciones de escritorio. En mi prototipo disponible en https://github.com/VolkmarR/OTEL-Traces-Winforms-Aspire se muestran soluciones prácticas a ambos problemas.
Configuración del Aspire Dashboard
El repositorio incluye un archivo docker compose con la configuración necesaria para levantar el Aspire Dashboard. Como el protocolo gRPC no es compatible con .NET Framework 4.7.2 es importante exponer la mapping de puertos 4318:18890 para usar el protocolo HttpProtobuf. De este modo el agente que corre en Docker recibirá trazas vía http en el endpoint https://localhost:4318/v1/traces y las mostrará en la interfaz local.
Configuración de la aplicación
Agrega el paquete nuget OpenTelemetry.Exporter.OpenTelemetryProtocol a la aplicación WinForms. Crea una utilidad de inicialización que instancie un ActivitySource para tu aplicación, configure el TracerProvider con AddOtlpExporter estableciendo protocolo en HttpProtobuf y endpoint en https://localhost:4318/v1/traces y defina el ResourceBuilder con el nombre de servicio y versión. Invoca este setup desde program.cs solo en entornos de desarrollo local y no en producción.
Instrumentación manual
Al no disponer de auto instrumentación hay que añadir spans manualmente en el código. Una buena práctica es instrumentar métodos de la capa base que realicen operaciones relevantes y con cierta duración, como ejecución de sentencias SQL o llamadas HTTP. En el flujo recomendado se crean actividades root cuando el usuario inicia una acción por ejemplo al pulsar un botón y dentro de esa actividad root se crean actividades hijas para operaciones concretas como Execute. Añade etiquetas a las actividades para capturar metadatos útiles por ejemplo una etiqueta custom.sql con la consulta ejecutada. Asegúrate de iniciar actividades hijas solo si existe una actividad padre Current para mantener una jerarquía limpia.
Ejemplo de flujo
En un evento de interfaz de usuario como LoadButton Click inicia una actividad root usando el ActivitySource y dentro de ese using llama a métodos que ejecutan queries. En cada ejecución de query crea una actividad hija solo si Activity Current no es nulo añade tags con información relevante y cierra la actividad al finalizar. Este patrón mantiene las trazas legibles y evita crear spans sin contexto.
Resumen técnico
Estos son los pasos clave para llevar trazas OpenTelemetry desde una aplicación WinForms legacy al Aspire Dashboard ejecutar el contenedor Docker con el mapeo de puertos 4318:18890 instalar OpenTelemetry.Exporter.OpenTelemetryProtocol configurar el TracerProvider con protocolo HttpProtobuf y endpoint https://localhost:4318/v1/traces definir un ActivitySource y añadir trazas manuales en métodos relevantes del código. El repositorio de ejemplo contiene un prototipo funcional que demuestra todo lo anterior.
Sobre Q2BSTUDIO
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones modernas para empresas incluyendo inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure. Ofrecemos software a medida, servicios de inteligencia de negocio e implementaciones de Power BI para transformar datos en decisiones, así como soluciones de ia para empresas incluyendo agentes IA personalizados. Nuestro equipo integra buenas prácticas de observabilidad y trazabilidad para facilitar mantenibilidad y seguridad en aplicaciones legacy y nuevas aplicaciones. Si necesitas migrar capacidades de monitoreo a aplicaciones desktop o quieres incorporar inteligencia artificial y ciberseguridad en tus soluciones a medida en la nube, Q2BSTUDIO puede ayudarte.
Servicios destacados
Aplicaciones a medida software a medida inteligencia artificial ciberseguridad servicios cloud aws y azure servicios inteligencia de negocio ia para empresas agentes IA power bi. Contacta a Q2BSTUDIO para evaluar tu caso y diseñar una hoja de ruta que incluya observabilidad con OpenTelemetry, integración con Aspire Dashboard y despliegue en entornos cloud AWS o Azure.
Enlaces útiles
Repositorio de ejemplo https://github.com/VolkmarR/OTEL-Traces-Winforms-Aspire y documentación oficial de OpenTelemetry para .NET. Para proyectos a medida y consultoría en inteligencia artificial agentes IA y power bi contacta a Q2BSTUDIO.