Desarrollador .NET: pregunta de entrevista

¿Cómo propagas cancelación en .NET?

Acepta CancellationToken en límites async y pásalo a cada operación de E/S cancelable. Detente pronto sin convertir cancelación en error del servidor y no sustituyas el token de solicitud por CancellationToken.None.

Respuesta directa

Qué debe cubrir una buena respuesta

Cómo funciona

La cancelación en .NET es cooperativa y fluye a través de parámetros CancellationToken. ASP.NET Core proporciona HttpContext.RequestAborted, que se activa cuando el cliente se desconecta; se pasa a cada llamada asíncrona a base de datos, HTTP y colas para que el trabajo se detenga en lugar de completarse para nadie. Los bucles largos de CPU llaman a ThrowIfCancellationRequested en puntos seguros. Una OperationCanceledException es esperada y debe convertirse en un resultado silencioso tipo 499 en lugar de un 500 registrado. Las fuentes de token enlazadas combinan un token de solicitud con un timeout, y los servicios en segundo plano reciben el token de parada del host.

Ejemplo

Un endpoint de búsqueda pasó cancellationToken del parámetro de la acción a ToListAsync de EF Core y a la llamada HttpClient al servicio de ranking; cuando los usuarios tecleaban rápido y abandonaban solicitudes, la carga de base de datos cayó un tercio porque las consultas abandonadas se cancelaban. El filtro de excepciones traduce OperationCanceledException a una respuesta vacía sin entrada de error en el log.

Errores frecuentes

  • Aceptar un CancellationToken y no pasarlo nunca a las llamadas que podrían respetarlo.
  • Pasar CancellationToken.None para ocultar un aviso.
  • Registrar cada cancelación como error y alertar por desconexiones de clientes.

Una estructura útil para responder

Responde desde tu propia experiencia.

No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.

Practica esta respuesta con MiraHint

Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.

Descargar MiraHint
Preguntas de entrevista para Desarrollador .NET