en-UShe-IL
You are here:   Blog
Register   |  Login

Blog Archive:

Maximize
* Can be used in order to search for older blogs Entries

Search in blogs


Blog Categories:

Maximize
* Can be used in order to search for blogs Entries by Categories

Blog Tags:

Maximize
* Can be used in order to search for blogs by keywords

TNWikiSummit


Awared MVP 


 


Microsoft® Community Contributor 


Microsoft® Community Contributor


 Read first, before you you use the blog! Maximize
מאי27

Written by: ronen ariely
27/05/2012 17:28 RssIcon

הקדמה

.

.

.

.

.

.

שילוב בפרוייקט

שלב 1: התקנת החבילה של MiniProfiler בעזרת NuGet

שלב 2: הפעלת הפרופיילר באירוע Application_BeginRequest בקובץ Global.asax

protected void Application_BeginRequest()
{
    if (Request.IsLocal) { MiniProfiler.Start(); } //or any number of other checks, up to you
}

שלב 3: סגירת הפרופיילר באירוע Application_EndRequest בקובץ Global.asax

protected void Application_EndRequest()
{
    MiniProfiler.Stop(); //stop as early as you can, even earlier with MvcMiniProfiler.MiniProfiler.Stop(discardResults: true);
}

שלב 4: פתיחת מופע של הפרופיילר והגדרות מאפיינים באירוע Application_Start בקובץ Global.asax

MiniProfilerEF.Initialize_EF42(); // this is currently unable to profile SqlCE or Oracle databases.
//MiniProfilerEF.Initialize(); // if you specify connection strings explicitly in your web.config, use this
MiniProfiler.Settings.ExcludeStackTraceSnippetFromSqlTimings = true;
// display sql parameters
MiniProfiler.Settings.SqlFormatter = new StackExchange.Profiling.SqlFormatters.InlineFormatter();

שלב 5: הוספת הסקריפט אל ה View שלנו או אל קובץ ה view הכללי _Layout.cshtml אם רוצים להפעיל בכל האתר

<head>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
    @StackExchange.Profiling.MiniProfiler.RenderIncludes()
>

הגדרות מתקדמות

* ניתן להגדיר "צעדים" (בלוק של קוד שיוגדר בתוך profiler.step) שאנו רוצים לנטר. כפי שנראה בקוד הבא ניתן גם להגדיר הירארכיה של צעדים (צעד בתוך צעד אחר)

var profiler = MiniProfiler.Current; // it's ok if this is null
using (profiler.Step("Set page title"))
{
    ViewBag.Title = "My Home Page";
}
using (profiler.Step("Doing complex stuff"))
{
    using (profiler.Step("Step A"))
    { // something more interesting here
        Thread.Sleep(100);
    }
    using (profiler.Step("Step B"))
    { // and here
        Thread.Sleep(250);
    }
}
using (profiler.Step("Set message"))
{
    ViewBag.Message = "Welcome to ASP.NET MVC!";
}
במקרה זה כל צעד מנוטר בנפרד ונוכל לקבל חישובי זמנים וסטטיסטיקות על כל צעד שאנו מגדירים.

* ניתן להגדיר DbProviderFactory בקובץ הקונפיגורציה Web.config. DbProviderFactories
היא מחלקה סטאטית (static) של דוט-נט 4 שמאפשרת לנו לעבוד עם database provider דינאמי. למשל אם אנו רוצים לפתח אפליקציה שאמתימה למגוון מסדי נתונים. הגדרת ה Factory
מגדיר לנו למעשה InvariantName עבור ה provider שלנו יכולה להעשות בקובץ הקונפיגורציה של האפליקציה פעם אחת.

כך למשל בקובץ הקונפיגורציה של המכונה שלנו קיים Factory מהצורה הבאה

  
    "SqlClient Data Provider"
     invariant="System.Data.SqlClient"
     description=".Net Framework Data Provider for SqlServer"
     type="System.Data.SqlClient.SqlClientFactory, System.Data,
     Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
    />
  

ה InvariantName שלו הוא System.Data.SqlClient ובערך זה אנו נעזרים בקוד על מנת לעבוד עם ה provider הזה. אם נרצה להחליף ספק (provider) למסד נתונים אחר אנו צריכים רק להחליף את נתון זה.

על מנת להגדיר DbProviderFactory עבור הפרופיילר שלנו אם אנו עובדים עם MiniProfiler (דוגמאות הקוד מעל עשו שימוש ב גרסה של MiniProfiler.EF) אז ניתן להוסיף את הקוד הבא בקובץ הקונפיגורציה של האפליקציה.

<system.data>
  <DbProviderFactories>
    <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
    <add name="MvcMiniProfiler.Data.ProfiledDbProvider"
         invariant="MvcMiniProfiler.Data.ProfiledDbProvider"
         description="MvcMiniProfiler.Data.ProfiledDbProvider"
         type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.6.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
  DbProviderFactories>
system.data>

.

.

.

בהצלחה,

קישורים נוספים

מדריך מלא
http://miniprofiler.com

האתר הרשמי של הפרוייקט
http://code.google.com/p/mvc-mini-profiler

http://code.google.com/p/mvc-mini-profiler/source/browse/Sample.Mvc/Global.asax.cs

http://www.hanselman.com/blog/NuGetPackageOfTheWeek9ASPNETMiniProfilerFromStackExchangeRocksYourWorld.aspx

http://stackoverflow.com/questions/tagged/mini-profiler

Obtaining a DbProviderFactory - ADO.NET
ariely.info/Blog/tabid/83/ctl/Edit_Entry/mid/408/EntryID/85/language/he-IL/Default.aspx