0Pricing
C# Academy · Ders

Hız Sınırlama Ara Yazılımını Yapılandırma

Uç nokta ve ilke başına hız sınırları uygulayın.

Hız Sınırlama Ara Yazılımını Yapılandırma, CoddyKit'te ücretsiz bir C# Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C# Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C# Academy kursu toplamda 4 dersten oluşur.

AddRateLimiter

Yapılandırma, hizmet kapsayıcısındaki AddRateLimiter ile başlar. Bir veya daha fazla adlandırılmış ilke ve isteğe bağlı bir genel ret durum kodu tanımlarsınız.

builder.Services.AddRateLimiter(options =>
{
    options.RejectionStatusCode =
        StatusCodes.Status429TooManyRequests;
});

Sabit Pencere İlkesi

AddFixedWindowLimiter, adlandırılmış bir ilke kaydeder. İzin sınırını, pencere süresini ve kuyruk davranışını ayarlayın.

options.AddFixedWindowLimiter("fixed", limiter =>
{
    limiter.PermitLimit = 100;
    limiter.Window = TimeSpan.FromMinutes(1);
    limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
    limiter.QueueLimit = 0;
});

Kayan Pencere İlkesi

AddSlidingWindowLimiter, yumuşatma ayrıntı düzeyini denetlemek için SegmentsPerWindow özelliğini ekler.

options.AddSlidingWindowLimiter("sliding", limiter =>
{
    limiter.PermitLimit = 100;
    limiter.Window = TimeSpan.FromMinutes(1);
    limiter.SegmentsPerWindow = 6;
    limiter.QueueLimit = 0;
});

Belirteç Kovası İlkesi

AddTokenBucketLimiter, kova boyutunu ve yenileme hızını ayarlar.

options.AddTokenBucketLimiter("token", limiter =>
{
    limiter.TokenLimit = 100;
    limiter.TokensPerPeriod = 20;
    limiter.ReplenishmentPeriod = TimeSpan.FromSeconds(10);
    limiter.QueueLimit = 0;
});

Eşzamanlılık İlkesi

AddConcurrencyLimiter, eşzamanlı istekleri sınırlar.

options.AddConcurrencyLimiter("concurrent", limiter =>
{
    limiter.PermitLimit = 5;
    limiter.QueueLimit = 10;
    limiter.QueueProcessingOrder = QueueProcessingOrder.OldestFirst;
});

Ara Yazılımı Ekleme

Hız sınırlamayı işlem hattında UseRateLimiter ile etkinleştirin. Yönlendirmeden sonra, erken bir aşamaya yerleştirin.

var app = builder.Build();

app.UseRateLimiter();

app.MapControllers();

RequireRateLimiting

Adlandırılmış bir ilkeyi uç noktalara RequireRateLimiting (minimal API) veya [EnableRateLimiting] özniteliği (denetleyiciler) ile uygulayın.

app.MapGet("/search", () => Results.Ok())
   .RequireRateLimiting("token");

// Controller equivalent:
// [EnableRateLimiting("token")]

Belirli Uç Noktalarda Devre Dışı Bırakma

Bir uç noktayı grup ya da genel sınırlayıcıdan DisableRateLimiting veya [DisableRateLimiting] ile muaf tutun.

app.MapGet("/health", () => Results.Ok())
   .DisableRateLimiting();

Bölümlere Sahip Genel Sınırlayıcı

GlobalLimiter her isteğe uygulanır. Her kullanıcıya veya IP'ye kendi sayacını vermek için PartitionedRateLimiter.Create kullanın.

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)
            });
    });

Reddetme Davranışını Özelleştirme

OnRejected, bir istek kısıtlandığında Retry-After üst bilgisi veya anlaşılır bir gövde eklemenizi sağlar.

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);
};

Bir Rota Grubuna Uygulama

Bir ilkeyi tüm rota grubuna ekleyerek içindeki her uç noktanın sınırı paylaşmasını sağlayın.

var api = app.MapGroup("/api")
             .RequireRateLimiting("fixed");

api.MapGet("/products", () => Results.Ok());
api.MapGet("/orders", () => Results.Ok());

Kısa Kontrol

Ara yazılım kurulumunu doğrulayın.

Özet

Hız sınırlamayı yapılandırdınız:

  • AddRateLimiter, sabit pencere, kayan pencere, belirteç kovası ve eşzamanlılık ilkelerini tanımlar.
  • UseRateLimiter ara yazılımı etkinleştirir; RequireRateLimiting bir ilkeyi uygular.
  • GlobalLimiter ile PartitionedRateLimiter, istemci başına sayaçlar sağlar.
  • OnRejected, 429 yanıtını özelleştirir.

Sırada: çıktı önbellekleme.

Sıkça Sorulan Sorular

“Hız Sınırlama Ara Yazılımını Yapılandırma” dersi ücretsiz mi?

Evet — “Hız Sınırlama Ara Yazılımını Yapılandırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C# Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C# Academy kursu toplamda 4 dersten oluşur.

“Hız Sınırlama Ara Yazılımını Yapılandırma” dersinde ne öğreneceğim?

Uç nokta ve ilke başına hız sınırları uygulayın. C# Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C# Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C# Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Hız Sınırlama Ara Yazılımını Yapılandırma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C# Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C# Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Hız Sınırlama Algoritmaları
  2. Hız Sınırlama Ara Yazılımını Yapılandırma
  3. Çıktı Önbellekleme Temelleri
  4. Önbellek İlkeleri ve Geçersiz Kılma
← C# Academy Sayfasına Dön