در توسعه‌ی برنامه‌های وب مدرن، بهینه‌سازی عملکرد APIها نه تنها تجربه کاربری را بهبود می‌بخشد، بلکه هزینه‌های سرور و مصرف منابع را کاهش می‌دهد. دو روش کلیدی برای دستیابی به این هدف در ASP.NET Core MVC، استفاده از Rate Limiting و Response Compression است. در این مقاله با نحوه پیاده‌سازی این دو تکنیک آشنا خواهیم شد.
کینگتو - آموزش برنامه نویسی تخصصصی - دات نت - سی شارپ - بانک اطلاعاتی و امنیت

بهینه‌سازی API ها در ASP.NET Core MVC با استفاده از Rate Limiting و Response Compression

27 بازدید 0 نظر ۱۴۰۴/۰۲/۱۷

Rate Limiting (محدودسازی نرخ درخواست‌ها)

هدف:

  • جلوگیری از ارسال بیش‌ازحد درخواست‌ها به API توسط کاربران یا بات‌ها که می‌تواند باعث فشار بر سرور یا سوء‌استفاده شود.

نصب پکیج:

از نسخه .NET 7 به بعد، Rate Limiting به صورت Built-in در ASP.NET Core اضافه شده است. اما اگر از نسخه پایین‌تری استفاده می‌کنید، می‌توانید از پکیج‌های جانبی مانند AspNetCoreRateLimit استفاده کنید.

برای .NET 7+:

dotnet add package Microsoft.AspNetCore.RateLimiting

پیکربندی در Program.cs:

using Microsoft.AspNetCore.RateLimiting;
using System.Threading.RateLimiting;

var builder = WebApplication.CreateBuilder(args);

// تعریف محدودیت سراسری
builder.Services.AddRateLimiter(options =>
{
    options.GlobalLimiter = PartitionedRateLimiter.Create(httpContext =>
        RateLimitPartition.GetFixedWindowLimiter(
            partitionKey: httpContext.Connection.RemoteIpAddress?.ToString() ?? "unknown",
            factory: _ => new FixedWindowRateLimiterOptions
            {
                PermitLimit = 5,
                Window = TimeSpan.FromSeconds(10),
                QueueProcessingOrder = QueueProcessingOrder.OldestFirst,
                QueueLimit = 2
            }));

    options.RejectionStatusCode = StatusCodes.Status429TooManyRequests;
});

var app = builder.Build();

app.UseRateLimiter();

app.MapControllers();

app.Run();

نکته:

شما می‌توانید محدودیت را بر اساس IP، کاربر، یا مسیر API تنظیم کنید.

2. Response Compression (فشرده‌سازی پاسخ‌ها)

هدف:

  • کاهش حجم داده‌های ارسال شده از سرور به کلاینت و در نتیجه افزایش سرعت بارگذاری APIها.

نصب پکیج (اگر لازم باشد):

در اکثر نسخه‌های جدید نیازی به نصب جداگانه نیست، اما اگر نبود، نصب کنید:

dotnet add package Microsoft.AspNetCore.ResponseCompression

پیکربندی در Program.cs:

builder.Services.AddResponseCompression(options =>
{
    options.EnableForHttps = true;
    options.Providers.Add();
});

builder.Services.Configure(options =>
{
    options.Level = System.IO.Compression.CompressionLevel.Fastest;
});

var app = builder.Build();

app.UseResponseCompression();

app.MapControllers();

app.Run();

نتیجه:

پاسخ‌های API مانند JSON، XML و حتی HTML به صورت GZIP فشرده می‌شوند و حجم آن‌ها به‌شدت کاهش می‌یابد.

 

ترکیب Rate Limiting و Compression: عملکردی سریع، امن و پایدار

با ترکیب این دو تکنیک در کنار سایر ابزارهای بهینه‌سازی مانند کش (Caching) و لاگ‌گیری هوشمند (Logging)، می‌توان APIهایی پایدارتر و مقیاس‌پذیرتر ایجاد کرد. این امر خصوصاً در پروژه‌های تجاری با ترافیک بالا بسیار حائز اهمیت است.

builder.Services.AddResponseCompression(options =>
{
    options.EnableForHttps = true;
    options.Providers.Add();
});

builder.Services.Configure(options =>
{
    options.Level = System.IO.Compression.CompressionLevel.Fastest;
});

var app = builder.Build();

app.UseResponseCompression();

app.MapControllers();

app.Run();

 

نتیجه‌گیری

تکنیک مزایا
Rate Limiting جلوگیری از سوءاستفاده، کنترل ترافیک، کاهش بار سرور
Response Compression افزایش سرعت بارگذاری، کاهش مصرف پهنای باند، تجربه کاربری بهتر

استفاده هوشمندانه از این ابزارها در پروژه‌های ASP.NET Core MVC، گامی مؤثر در جهت بهینه‌سازی حرفه‌ای APIها خواهد بود.

لینک استاندارد شده: 3NBl6l

0 نظر

    هنوز نظری برای این مقاله ثبت نشده است.