01
Qué es y qué problema resuelve
Limitar solicitudes controla el consumo de capacidad. Una ventana fija permite cierta cantidad por intervalo; otras estrategias suavizan ráfagas o limitan concurrencia.
El diseño necesita identificar qué recurso proteges: entrada de peticiones, operaciones costosas o capacidad compartida entre clientes.
02
Ejemplo paso a paso
Punto de partida Fragmento de ASP.NET Core. Este límite nombrado comparte veinte permisos por instancia entre solicitudes a las que se aplique; no particiona por usuario.
Antes de ejecutar
Requiere un host ASP.NET Core 10 preparado. builder y app corresponden a WebApplication.CreateBuilder y Build; las variables y tipos auxiliares deben definirse. Registra los servicios usados antes de Build. El ZIP de consola no contiene esta API.
using System.Threading.RateLimiting;
builder.Services.AddRateLimiter(options =>
{
options.RejectionStatusCode = 429;
options.AddFixedWindowLimiter("Consulta", limiter =>
{
limiter.PermitLimit = 20;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.QueueLimit = 0;
});
});
app.UseRateLimiter();
app.MapGet("/api/disponibilidad", () => Results.Ok("Disponible"))
.RequireRateLimiting("Consulta");Cómo funciona
- La ventana fija define veinte permisos por minuto.
- QueueLimit cero rechaza las solicitudes que no obtienen permiso.
- El endpoint aplica el límite nombrado y devuelve 429 al agotarlo.
Resultado esperado: Tras consumir permisos en la ventana, las solicitudes adicionales reciben 429.
03
Cuándo usarlo y qué debes evitar
Define particiones y consecuencias con cuidado. Una IP puede representar muchos usuarios detrás de un proxy; una identidad puede faltar antes de autenticar.
Un límite en memoria se aplica por instancia y no equivale a una cuota global. La denegación debe ser observable y comunicarse como 429, con información de reintento cuando sea posible.
Ampliación opcional · contexto y variantes del tema
Prueba negativa como evidencia de seguridad
Construye una matriz actor × acción × recurso: propietario, miembro autorizado, ajeno, administrador y anónimo. Para cada celda define permitido o denegado. La prueba negativa no solo espera 403: comprueba que el estado, outbox y registros de éxito no cambiaron. Una denegación acompañada por un correo de confirmación también revela un defecto.
Valida token expirado, audiencia incorrecta y firma inválida en pruebas del adaptador de identidad. Separa esas pruebas de la política de recursos usando identidades ficticias en el host de pruebas. Conserva datos de ejemplo y jamás incluyas credenciales reales en fixtures, cuadernos o capturas.
04 · Práctica guiada · opcional
Practica lo aprendido
En una API preparada, envía una ráfaga superior a veinte solicitudes dentro de una ventana y registra los rechazos. Predice por separado qué ocurriría al agregar otra instancia.
- 01Configura el endpoint y el limitador de ventana fija sin cola.
- 02Envía solicitudes dentro de la misma ventana y anota estados y tiempos.
- 03Explica el contador local y diseña como ampliación una cuota compartida o una partición confiable.
Ver solución orientativa
Una instancia permite veinte solicitudes por ventana y rechaza las adicionales con 429. El borde de ventana afecta el ensayo. Dos instancias conservan contadores separados; no existe una cuota global ni por usuario en este registro.
05
Comprueba lo aprendido
Responde antes de abrir la explicación. Esta comprobación es opcional y no guarda una puntuación.
01¿Este limitador establece una cuota global de veinte solicitudes?
No. Su estado local no se comparte entre instancias.
02¿Qué cambia en la cuota efectiva al ejecutar este contador local en dos procesos?
Cada proceso conserva su propia ventana de veinte permisos. Si el tráfico se reparte, el conjunto puede aceptar más de veinte; una cuota global requiere coordinación adicional.
Cómo demostrar el objetivo
Compara tu práctica con estos resultados. Si solo diseñaste una prueba, registra su resultado como esperado, no como observado.
- En una instancia, la solicitud que supera los permisos de la ventana recibe 429.
- Explicas por qué dos procesos no forman por sí solos una cuota global de veinte.
Qué debes recordar
- El límite protege una capacidad definida.
- Partición y estado compartido determinan quién consume la cuota.
Tu cuaderno · notas personales
Cuaderno local
Tus notas del contenido
Se guardan únicamente en este dispositivo. Puedes exportarlas cuando quieras.
Material de apoyo · descarga, glosario y referencias
Explicaciones, ejemplos y prácticas propios de Academia de Software. Los fragmentos de integración requieren las dependencias indicadas; el ZIP contiene el núcleo de consola. Las lecturas externas se consultan en su sitio original y conservan sus condiciones. Procedencia y condiciones de uso.