میانبر در خطلوله پردازش: آشنایی با ویژگی [ShortCircuit] در ASP.NET Core 11
نویسنده: وحید نصیری
تاریخ: ۱۴۰۵/۰۴/۲۹ ۰۹:۱۵
آدرس: www.dntips.ir
/health) یا ارائه فایل قوانین موتورهای جستجو (robots.txt)—طی کردن کامل این خطلوله به معنای پردازش اضافی و تخصیص بیمورد حافظه (Memory Allocation) است.[ShortCircuit] را معرفی کرده است (که توسط عضو فعال جامعه داتنت، @Porozhniakov توسعه یافته است). این ویژگی به توسعهدهندگان اجازه میدهد اندپوئینتهای خاصی را بهصورت صریح علامتگذاری کنند تا بلافاصله پس از مرحله مسیریابی (Routing)، باقی خطلوله میانافزارها دور زده شود و پاسخ صادر گردد.Request -> Routing -> Authentication -> Authorization -> CORS -> Custom Middlewares -> Endpoint Execution -> Response[ShortCircuit]:Request -> Routing -> Endpoint Execution -> Response.ShortCircuit() برای Minimal APIها معرفی شده بود. اما در .NET 11، این قابلیت به شکل یک Attribute صریح پیادهسازی شده است. این ارتقاء دو مزیت کلیدی دارد:[ShortCircuit] را مستقیماً روی کنترلرها یا اکشنمتدها بنویسید.[ShortCircuit] به کنترلر یا یک اکشن مشخص، اجرای میانافزارهای بعدی لغو میشود:using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("robots.txt")]
[ShortCircuit] // دور زدن خطلوله میانافزارها بلافاصله پس از Routing
public class RobotsController : ControllerBase
{
[HttpGet]
public IActionResult Get() => Content("User-agent: *\nDisallow:", "text/plain");
}// استفاده از Attribute در Minimal API
app.MapGet("/health", [ShortCircuit] () => "Healthy");
// استفاده از روش Fluent API (همچنان معتبر و قابل استفاده است)
app.MapGet("/ping", () => "Pong").ShortCircuit();// به عنوان مثال: مسدودسازی یا پاسخ سریع به مسیرهای قدیمی
app.MapGet("/old-api", [ShortCircuit(404)] () => { });[ShortCircuit] تاخیر (Latency) پردازش را کاهش داده و Throughput سرور را به ویژه در ترافیکهای بالا افزایش میدهد. اما به دلیل دور زدن میانافزارها، رعایت نکات زیر ضروری است:| سناریوهای مناسب (Recommended) | سناریوهای نامناسب (Avoid) |
Health Checks: اندپوئینتهای زیرساختی مانند /healthz یا /ready | اندپوئینتهای نیازمند امنیت: مسیرهایی که نیازمند احراز هویت (AuthN/AuthZ) هستند. |
فایلهای استاتیک سیستم: فایلهای robots.txt یا favicon.ico | درخواستهای Cross-Origin: اندپوئینتهایی که به پشتیبانی CORS نیاز دارند. |
| پینگ و متریکهای عمومی: اندپوئینتهای تست زنده بودن سرور | پردازشهای نیازمند لاگ سفارشی: مسیرهایی که باید توسط میانافزار لاگینگ ردیابی شوند. |
[ShortCircuit] در ASP.NET Core 11 یک گام موثر در راستای بهینهسازی عملکرد (Performance) و پاکیزگی کد (Clean Code) است. این ویژگی به توسعهدهندگان اجازه میدهد تا اندپوئینتهای عمومی و زیرساختی برنامه را از بار سنگین خطلوله میانافزارها رها سازند. اگر در پروژههای خود از اندپوئینتهای پایش سلامت یا فایلهای استاتیک استفاده میکنید، به محض مهاجرت به .NET 11، اعمال این ویژگی یکی از آسانترین و مؤثرترین روشها برای کاهش مصرف منابع سرور خواهد بود.