Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen
Soveltakaa nopeusrajoituksia päätepiste- ja käytäntökohtaisesti.
Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 4 oppituntia.
AddRateLimiter
Määritys alkaa palvelusäilöön lisättävästä komennosta AddRateLimiter. Määritä yksi tai useampi nimetty käytäntö sekä valinnainen yleinen hylkäyksen tilakoodi.
builder.Services.AddRateLimiter(options =>
{
options.RejectionStatusCode =
StatusCodes.Status429TooManyRequests;
});Kiinteän aikaikkunan käytäntö
AddFixedWindowLimiter rekisteröi nimetyn käytännön. Määritä sallittujen pyyntöjen määrä, ajanjakson pituus ja jonon toiminta.
options.AddFixedWindowLimiter("fixed", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
limiter.QueueLimit = 0;
});Liukuvan aikaikkunan käytäntö
AddSlidingWindowLimiter lisää asetuksen SegmentsPerWindow, jolla määritetään tasoituksen tarkkuus.
options.AddSlidingWindowLimiter("sliding", limiter =>
{
limiter.PermitLimit = 100;
limiter.Window = TimeSpan.FromMinutes(1);
limiter.SegmentsPerWindow = 6;
limiter.QueueLimit = 0;
});Poletinsäiliökäytäntö
AddTokenBucketLimiter määrittää säiliön koon ja täydennysnopeuden.
options.AddTokenBucketLimiter("token", limiter =>
{
limiter.TokenLimit = 100;
limiter.TokensPerPeriod = 20;
limiter.ReplenishmentPeriod = TimeSpan.FromSeconds(10);
limiter.QueueLimit = 0;
});Samanaikaisuuskäytäntö
AddConcurrencyLimiter rajoittaa samanaikaisten pyyntöjen määrää.
options.AddConcurrencyLimiter("concurrent", limiter =>
{
limiter.PermitLimit = 5;
limiter.QueueLimit = 10;
limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
});Middlewaren lisääminen
Ota nopeusrajoitus käyttöön käsittelyputkessa komennolla UseRateLimiter. Sijoita se reitityksen jälkeen mahdollisimman alkuun.
var app = builder.Build();
app.UseRateLimiter();
app.MapControllers();RequireRateLimiting
Liitä nimetty käytäntö päätepisteisiin komennolla RequireRateLimiting (Minimal API) tai ohjainten [EnableRateLimiting]-attribuutilla.
app.MapGet("/search", () => Results.Ok())
.RequireRateLimiting("token");
// Controller equivalent:
// [EnableRateLimiting("token")]Poistaminen käytöstä tietyissä päätepisteissä
Vapauta päätepiste ryhmä- tai yleisestä rajoituksesta komennolla DisableRateLimiting tai attribuutilla [DisableRateLimiting].
app.MapGet("/health", () => Results.Ok())
.DisableRateLimiting();Yleinen rajoitin osioilla
GlobalLimiter koskee jokaista pyyntöä. Käytä komentoa PartitionedRateLimiter.Create, jotta jokaisella käyttäjällä tai IP-osoitteella on oma laskurinsa.
options.GlobalLimiter = PartitionedRateLimiter.Create<HttpContext, string>(
context =>
{
var key = context.User.Identity?.Name
?? context.Connection.RemoteIpAddress?.ToString()
?? "anon";
return RateLimitPartition.GetFixedWindowLimiter(key, _ =>
new FixedWindowRateLimiterOptions
{
PermitLimit = 100,
Window = TimeSpan.FromMinutes(1)
});
});Hylkäyksen mukauttaminen
OnRejected-toiminnon avulla voit lisätä Retry-After-otsakkeen tai selkeän vastaustekstin, kun pyyntöä rajoitetaan.
options.OnRejected = async (context, token) =>
{
if (context.Lease.TryGetMetadata(
MetadataName.RetryAfter, out var retry))
context.HttpContext.Response.Headers.RetryAfter =
((int)retry.TotalSeconds).ToString();
await context.HttpContext.Response
.WriteAsync("Rate limit exceeded.", token);
};Soveltaminen reittiryhmään
Liitä käytäntö koko reittiryhmään, jolloin kaikki sen sisältämät päätepisteet käyttävät samaa rajoitusta.
var api = app.MapGroup("/api")
.RequireRateLimiting("fixed");
api.MapGet("/products", () => Results.Ok());
api.MapGet("/orders", () => Results.Ok());Pikatarkistus
Varmista, että middlewaren määritys on oikein.
Kertaus
Määritit nopeusrajoituksen:
AddRateLimitermäärittää kiinteän aikaikkunan, liukuvan aikaikkunan, poletinsäiliön ja samanaikaisuuden käytännöt.UseRateLimiterottaa middlewaren käyttöön jaRequireRateLimitingsoveltaa käytäntöä.GlobalLimiterjaPartitionedRateLimiterluovat asiakaskohtaiset laskurit.OnRejectedmukauttaa 429-vastauksen.
Seuraavaksi: tulosteiden välimuistitus.
Opi C# tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 93
- Oppitunnit
- 346
Usein kysytyt kysymykset
Onko oppitunti ”Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen” ilmainen?
Kyllä – oppitunnin ”Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen”?
Soveltakaa nopeusrajoituksia päätepiste- ja käytäntökohtaisesti. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?
Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Nopeudenrajoituksen algoritmit
- Nopeudenrajoitusmiddleware-ohjelmiston määrittäminen
- Tulosteiden välimuistin perusteet
- Välimuistikäytännöt ja mitätöinti