پیش از پرداختن به جزئیات ابزارها، درک اهمیت مانیتورینگ و پروفایلینگ ضروری است. این فرآیندها به توسعهدهندگان کمک میکنند تا:

Application Insights یک سرویس Application Performance Management (APM) گسترده و قدرتمند است که توسط Microsoft Azure ارائه میشود. این ابزار دید عمیقی به عملکرد، دسترسپذیری و استفاده از برنامههای وب، موبایل و دسکتاپ فراهم میکند. Application Insights به طور یکپارچه با ASP.NET Core MVC ادغام میشود و اطلاعات ارزشمندی را به صورت خودکار جمعآوری میکند.
نحوه پیکربندی Application Insights در ASP.NET Core MVC:
نصب بسته NuGet: ابتدا بسته NuGet با نام Microsoft.ApplicationInsights.AspNetCore را به پروژه ASP.NET Core MVC خود اضافه کنید. میتوانید این کار را از طریق NuGet Package Manager در Visual Studio یا با استفاده از دستور زیر در .NET CLI انجام دهید:
dotnet add package Microsoft.ApplicationInsights.AspNetCore
افزودن سرویس Application Insights: در فایل Startup.cs و در متد ConfigureServices، سرویس Application Insights را اضافه کنید. برای این کار به یک کلید اتصال (Instrumentation Key) نیاز دارید که میتوانید آن را از پورتال Azure و از منبع Application Insights خود دریافت کنید.
ublic void ConfigureServices(IServiceCollection services)
{
services.AddApplicationInsightsTelemetry("");
services.AddControllersWithViews();
}
پیکربندی بیشتر (اختیاری): Application Insights امکان پیکربندیهای پیشرفتهتری را نیز فراهم میکند. برای مثال، میتوانید Telemetry Initializers و Telemetry Processors سفارشی را برای افزودن اطلاعات بیشتر به دادههای جمعآوری شده یا فیلتر کردن آنها پیادهسازی کنید.

اطلاعات جمعآوری شده توسط Application Insights:
پس از پیکربندی، Application Insights به طور خودکار طیف گستردهای از اطلاعات را جمعآوری میکند، از جمله:
ILogger در برنامه.
مثال عملی:
فرض کنید یک اکشن در کنترلر شما زمان زیادی طول میکشد تا پاسخ دهد. با استفاده از Application Insights، میتوانید به پورتال Azure مراجعه کرده و در بخش "Performance"، جزئیات مربوط به این درخواست را مشاهده کنید. این جزئیات شامل مدت زمان کل درخواست، زمان صرف شده در هر مرحله از pipeline ASP.NET Core، زمان صرف شده برای فراخوانیهای پایگاه داده و سایر وابستگیها خواهد بود. با بررسی این اطلاعات، میتوانید گلوگاه اصلی را شناسایی کرده و برای رفع آن اقدام کنید. برای مثال، ممکن است متوجه شوید که یک کوئری پایگاه داده خاص زمان زیادی طول میکشد و نیاز به بهینهسازی دارد.
همچنین، اگر در حین اجرای برنامه یک استثنا رخ دهد، Application Insights جزئیات کامل استثنا، شامل Stack Trace و زمان وقوع را ثبت میکند. این اطلاعات به شما کمک میکند تا به سرعت علت خطا را پیدا کرده و آن را برطرف کنید.
MiniProfiler یک ابزار پروفایلینگ سبک و آسان برای استفاده است که به طور خاص برای برنامههای وب طراحی شده است. بر خلاف Application Insights که یک دید کلی از عملکرد برنامه در طول زمان ارائه میدهد، MiniProfiler به شما امکان میدهد تا جزئیات دقیق مربوط به اجرای هر درخواست HTTP جداگانه را بررسی کنید. این ابزار به صورت یک نوار کوچک در بالای یا پایین صفحه مرورگر نمایش داده میشود و اطلاعات کلیدی مربوط به زمان پاسخگویی درخواست را نشان میدهد. با کلیک بر روی این نوار، میتوانید جزئیات بیشتری را مشاهده کنید.
نحوه پیکربندی MiniProfiler در ASP.NET Core MVC:
نصب بسته NuGet: بسته NuGet با نام MiniProfiler.AspNetCore.Mvc را به پروژه خود اضافه کنید:
dotnet add package MiniProfiler.AspNetCore.Mvc
افزودن سرویس MiniProfiler: در فایل Startup.cs و در متد ConfigureServices، سرویس MiniProfiler را اضافه کنید
public void ConfigureServices(IServiceCollection services)
{
services.AddMiniProfiler(options =>
{
// میتوانید تنظیمات مختلفی را در اینجا اعمال کنید
options.RouteBasePath = "/profiler"; // مسیر دسترسی به صفحه جزئیات پروفایلر
options.EnableServerTimingHeader = true; // افزودن هدر Server-Timing برای نمایش در DevTools مرورگر
}).AddEntityFramework(); // اگر از Entity Framework Core استفاده میکنید
services.AddControllersWithViews();
}
افزودن Middleware MiniProfiler: در متد Configure فایل Startup.cs، Middleware MiniProfiler را به pipeline درخواست اضافه کنید:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseMiniProfiler(); // اضافه کردن Middleware MiniProfiler
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
اطلاعات نمایش داده شده توسط MiniProfiler:
پس از پیکربندی، MiniProfiler اطلاعات زیر را برای هر درخواست HTTP نمایش میدهد:
AddEntityFramework().HttpClient.
مثال عملی:
فرض کنید یک صفحه در برنامه شما به کندی بارگذاری میشود. با فعال بودن MiniProfiler، پس از بارگذاری صفحه، یک نوار در بالای صفحه نمایش داده میشود که زمان کل بارگذاری را نشان میدهد. با کلیک بر روی این نوار، میتوانید جزئیات بیشتری را مشاهده کنید. ممکن است متوجه شوید که بخش "Rendering View" زمان زیادی طول میکشد. با بررسی این بخش، میتوانید تشخیص دهید که کدام بخش از View باعث کندی شده است (مثلاً یک حلقه بزرگ یا یک کامپوننت پیچیده).
همچنین، اگر برنامه شما با پایگاه داده تعامل داشته باشد، MiniProfiler تمام کوئریهای SQL اجرا شده در طول درخواست را نمایش میدهد و زمان اجرای هر کوئری را مشخص میکند. این به شما کمک میکند تا کوئریهای کند را شناسایی و آنها را بهینهسازی کنید (مثلاً با افزودن ایندکسهای مناسب).
در حالی که هر دو ابزار برای مانیتورینگ و پروفایلینگ برنامههای ASP.NET Core MVC مفید هستند، تفاوتهای کلیدی بین آنها وجود دارد:
| ویژگی | Application Insights | MiniProfiler |
| هدف اصلی | مانیتورینگ جامع عملکرد، سلامت و استفاده از برنامه در طول زمان | پروفایلینگ دقیق درخواستهای HTTP فردی در زمان توسعه و تست |
| محیط استفاده | محیطهای Production و Development | عمدتاً محیطهای Development و Test |
| دادههای جمعآوری شده | طیف گستردهای از دادهها شامل درخواستها، استثناها، وابستگیها، لاگها، عملکرد و رویدادهای سفارشی | جزئیات دقیق مربوط به اجرای یک درخواست، شامل زمانبندی مراحل، کوئریهای SQL و فراخوانیهای HTTP |
| نحوه نمایش دادهها | پورتال Azure با داشبوردها و ابزارهای تحلیلی قدرتمند | نوار کوچک در مرورگر با قابلیت نمایش جزئیات بیشتر در صفحه |
| تاثیر بر عملکرد | حداقل تاثیر بر عملکرد در محیط Production | ممکن است تاثیر بیشتری بر عملکرد در محیط Production داشته باشد (توصیه میشود در Production غیرفعال شود) |
| پیچیدگی پیکربندی | نسبتاً ساده | بسیار ساده |
| هزینه | مبتنی بر مصرف در Azure | رایگان و متنباز |
بهترین رویکرد برای داشتن یک دید جامع و دقیق از عملکرد برنامه ASP.NET Core MVC، استفاده ترکیبی از Application Insights و MiniProfiler است.
ابزارهای مانیتورینگ و پروفایلینگ مانند Application Insights و MiniProfiler، داراییهای ارزشمندی برای توسعهدهندگان ASP.NET Core MVC هستند. Application Insights یک دید جامع از عملکرد و سلامت برنامه در طول زمان ارائه میدهد، در حالی که MiniProfiler امکان پروفایلینگ دقیق درخواستهای فردی را فراهم میکند. استفاده ترکیبی از این دو ابزار، یک رویکرد قدرتمند برای شناسایی و رفع گلوگاههای عملکردی، بهبود پایداری و در نهایت ارائه یک تجربه کاربری بهتر را امکانپذیر میسازد. با بهرهگیری صحیح از این ابزارها، میتوانید برنامههای ASP.NET Core MVC خود را به سطح بالاتری از عملکرد و کیفیت برسانید.
0 نظر
هنوز نظری برای این مقاله ثبت نشده است.