آشنایی و بررسی ابزار MiniProfiler
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: دو دقیقه

در کنار کتابخانه elmah که وظیفه ثبت تمامی خطاهای برنامه را دارد کتابخانه MiniProfiler امکان یافتن مشکلات کارایی و تنگناهای وب سایت را در اختیارمان قرار می‌دهد. دو قابلیت عمده که این ابزار فراهم می‌نمایید
  1. امکان مشاهده و بررسی کوئری‌های خام ADO.NET از قبیل SQL Server,Oracle و LINQ-to-SQL و EF/First Code و...
  2. نمایش زمان اجرای عملی صفحات
برای استفاده از این ابزار کافیست تا آن را از nuget دریافت نمایید
PM> Install-Package MiniProfiler
 در ASP.NET MVC در صفحه Layout_ قبل از بسته شدن تگ body تابع RenderIncludes را مانند زیر صدا بزنید تا در همه صفحات نمایش داده شود
@using StackExchange.Profiling;
<head>
 ..
</head>
<body>
  ...
  @MiniProfiler.RenderIncludes()
</body>
در کلاس global کد زیر را برای اجرای MiniProfiler اضافه نمایید
protected void Application_BeginRequest()
{
    if (Request.IsLocal)
    {
        MiniProfiler.Start();
    }
}

protected void Application_EndRequest()
{
    MiniProfiler.Stop();
}

برای پیکربندی MiniProfiler در web.config کد زیر را اضافه نمایید
<system.webServer>
  ...
  <handlers>
    <add name="MiniProfiler" path="mini-profiler-resources/*" verb="*" 
         type="System.Web.Routing.UrlRoutingModule"
         resourceType="Unspecified" 
         preCondition="integratedMode" />
  </handlers>
</system.webServer>
یا کتابخانه MiniProfiler.MVC را از nuget دریافت نمایید
PM> Install-Package MiniProfiler.MVC
با اضافه شدن این کتابخانه همه پیکربندی بصورت صورت خودکار انجام می‌گیرد. حال وب سایت را اجرا کنید در بالای صفحه مانند شکل زیر مدت زمان بارگذاری صفحه نمایش داده می‌شود که با کلیک بر روی آن اطلاعات بیشتری را مشاهده می‌نمایید

اگر در اکشن اجرا شده کوئری اجرا شد باشد ستونی به نام query times نمایش داده می‌شود که تعداد کوئری‌ها و مدت زمان آن را نمایش می‌دهد

حال بر روی گزینه sql کلیک کنید که صفحه دیگری باز شود و کوئری خام آن را مشاهد نمایید اگر کوئری تکرار شده باشد در کنار آن با DUPLICATE متمایز شده است

برای مشاهده کوئری‌های Entity Framework/First Code کتابخانه MiniProfiler.EF را اضافه نمایید
PM> Install-Package MiniProfiler.EF
اگر بصورت دستی MiniProfiler را پیکربندی کرده باشید می‌بایست در Application_Start دستور زیر را اجرا نمایید
protected void Application_BeginRequest()
{
    if (Request.IsLocal)
    {
        MiniProfiler.Start();
        MiniProfilerEF.Initialize();
    }
}
در حالت پبشرفته‌تر اگر قصد داشته باشید زمان یک قطعه کد را جداگانه محاسبه نمایید بصورت زیر عمل نمایید
public ActionResult Index()
{
    
    var profiler = MiniProfiler.Current;

    using (profiler.Step("Step 1"))
    {
        //code 1
    }

    using (profiler.Step("Step 2"))
    {
        //code 2
    }

    return View();
}
با این کار زمان هر step را بصورت جداگانه محاسبه می‌نماید. در ASP.NET Webforms دقیقا به همین صورت استفاده می‌شود فقط کافیست در masterpage اصلی یا اگر از masterpage استفاده نمی‌کنیم در صفحه مورد نظر تابع RenderIncludes را بصورت زیر صدا بزنیم
<%= StackExchange.Profiling.MiniProfiler.RenderIncludes() %>
امیدوارم مفید واقع شده باشد.
  • #
    ‫۱۱ سال و ۸ ماه قبل، یکشنبه ۱۵ بهمن ۱۳۹۱، ساعت ۲۱:۳۳
    ممنون از شما. آخرین باری که miniprofiler.ef رو تست کردم با ef5 کار نمی‌کرد و خطا می‌داد. شما تست کردید با آخرین نگارش ef code first؟
    • #
      ‫۱۱ سال و ۸ ماه قبل، یکشنبه ۱۵ بهمن ۱۳۹۱، ساعت ۲۱:۴۴
      نه هیچ مشکلی ندارد من خودم با ef code first 5 تست کردم
  • #
    ‫۱۱ سال و ۸ ماه قبل، چهارشنبه ۱۸ بهمن ۱۳۹۱، ساعت ۱۲:۱۶
    با سلام؛ آقای مهندس خیلی عالی توضیح دادید و بنده هم تست کردم و جواب گرفتم.
    با تشکر فراوان
  • #
    ‫۱۱ سال و ۸ ماه قبل، پنجشنبه ۱۹ بهمن ۱۳۹۱، ساعت ۰۰:۲۲
    سلام چرا تو دانت ای اس پی کار نمیکنه فقط تو ام وی سی جواب میده
    MiniProfiler  نمیشناسه
    • #
      ‫۱۱ سال و ۸ ماه قبل، پنجشنبه ۱۹ بهمن ۱۳۹۱، ساعت ۰۱:۳۸
      در ASP.NET هم بخوبی جواب می‌دهد آیا Handler را در Web.config اضافه نموده اید؟
  • #
    ‫۱۰ سال و ۲ ماه قبل، جمعه ۲۷ تیر ۱۳۹۳، ساعت ۲۱:۲۳
    با سلام و درود بی کران
    من کار که فرمودید انجام دادم اما زمانی که اجرا می‌کنم خطا 
    "No Entity Framework provider found for the ADO.NET provider with invariant name 'System.Data.Odbc'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information." 
    میدهد
    از entity framework6 , mvc4  استفاده می‌کنیم
    در صورت امکان روش رفع خطا می‌دانید بیان نماید تا بتوانم از این ابزار استفاده کنم