معرفی DNTProfiler
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: دو دقیقه

پیشاپیش فرا رسیدن سال نو را به تمام همراهان گرامی سایت net tips. تبریک عرض می‌کنم. به امید سالی پر از سلامتی و رونق، به همراه اشتیاق روز افزون جستجوگری و کشف زوایای پنهان دنیای برنامه نویسی!
هد‌یه‌ی نوروزی سایت net tips. پروژه‌ی پروفایلر سورس بازی است که با EF 6.x و همچنین NHibernate 4.x سازگار است. این پروژه از دو قسمت کلاینت و سرور تشکیل می‌شود.


نصب کلاینت EF برنامه‌ی DNTProfiler

تفاوتی نمی‌کند که برنامه‌ی شما وبی است یا ویندوزی؛ برای هر دو حالت ابتدا دستور ذیل را در کنسول پاورشل نیوگت اجرا کنید:
 PM> Install-Package DNTProfiler.EntityFramework.Core
با اینکار interceptor‌های پروفایلر نصب می‌شوند. برای فعال سازی آن نیاز است چند سطر ذیل را به فایل app.config/web.config پروژه‌ی خود اضافه کنید:
<configuration>
  <entityFramework>
    <interceptors>
      <interceptor type="DNTProfiler.EntityFramework.Core.DatabaseLogger, DNTProfiler.EntityFramework.Core">
        <parameters>
          <parameter value="http://localhost:8080" />
          <parameter value="|DataDirectory|\ErrorsLog.Log" />
        </parameters>
      </interceptor>
    </interceptors>
  </entityFramework>
</configuration>


دریافت و راه اندازی برنامه‌ی DNTProfiler

آخرین نگارش برنامه‌ی DNTProfiler را از برگه‌ی releases مخزن کد آن می‌توانید دریافت کنید:
https://github.com/VahidN/DNTProfiler/releases

این برنامه برای دات نت 4 نوشته شده‌است. بنابراین اگر هنوز از ویندوز XP استفاده می‌کنید، امکان کار کردن با آن‌را خواهید داشت.
البته بسته‌ی نیوگت DNTProfiler.EntityFramework.Core آن برای دات نت 4 و 4.5 تهیه شده‌است و به صورت خودکار بر اساس ساختار پروژه‌ی شما، یکی از آن‌ها نصب خواهد شد.

تا اینجا کار راه اندازی این برنامه به پایان می‌رسد. برای استفاده‌ی از آن باید ابتدا برنامه‌ی DNTProfiler را اجرا کنید. این برنامه به پیام‌های رسیده‌ی از برنامه‌ی اصلی شما (ارسال شده توسط DNTProfiler.EntityFramework.Core) گوش فرا می‌دهد و سپس شروع به آنالیز آن‌ها خواهد کرد. ساختار این تبادل اطلاعات هم بر اساس تهیه‌ی یک ASP.NET Self host Web API است.


این برنامه به صورت ماژولار تهیه شده‌است و تمام آنالیز کننده‌های آن در حقیقت یک پلاگین هستند (در حال حاضر دارای 32 پلاگین است). این پلاگین‌ها در گروه‌های Alerts (برای مثال یافتن جوین‌های تکراری و یک سری موارد بهینه سازی سرعت)، Loggers (طبقه بندی خام اطلاعات رسیده)، Visualizers (نمایش بصری اطلاعات رسیده) قرار می‌گیرند.


نظرات، پیشنهادات و همکاری


لطفا برای طرح سؤالات و ارائه‌ی پیشنهادات خود در زمینه‌ی این پروژه، به قسمت اختصاصی آن در سایت مراجعه نمائید:
https://www.dntips.ir/projects/details/21
  • #
    ‫۹ سال و ۶ ماه قبل، جمعه ۲۹ اسفند ۱۳۹۳، ساعت ۲۰:۵۸
    بنده هم پیشاپیش سال نو رو خدمت شما و اعضای محترم سایت تبریک عرض میکنم، امیدوارم سال خوب و پر از موفقیت‌های روزافزون داشته باشید. بابت پروژه هم خیلی خیلی ممنون واقعاً عالیه!
  • #
    ‫۹ سال و ۶ ماه قبل، شنبه ۱ فروردین ۱۳۹۴، ساعت ۰۶:۲۱
    باسلام و تبریک عید نوروز 
    به نظر میرسه در ویندوز 8.1 فایل اجرایی اجرا نمیشه و فرم را نشان نمی‌دهد.
    • #
      ‫۹ سال و ۶ ماه قبل، شنبه ۱ فروردین ۱۳۹۴، ساعت ۱۳:۳۱
      - تصویر انتهای بحث در ویندوز 8.1 تهیه شده‌است.
      - این برنامه برای اجرا نیاز به دات نت فریم ورک 4 دارد. بنابراین بر روی ویندوزهای XP SP3 به بعد قابل اجرا است.
      - ضمنا خطاهای برنامه در فایل متنی به نام ErrorsLog.Log در کنار فایل اجرایی برنامه ثبت می‌شوند.
    • #
      ‫۹ سال و ۶ ماه قبل، یکشنبه ۲ فروردین ۱۳۹۴، ساعت ۱۷:۳۷
      - لطفا نگارش جدید را دریافت کنید (^). فایل System.Net.Http.Formatting.dll فراموش شده بود.
      • #
        ‫۹ سال و ۶ ماه قبل، دوشنبه ۳ فروردین ۱۳۹۴، ساعت ۰۲:۴۵
        البته در ورژن قبلی بااضافه کردن خط زیر فایل کانفیگ و اجرای برنامه به صورت Run As Administrator مشکل حل شد.
        <runtime>
        <loadFromRemoteSources enabled="true"/>
            <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
              <dependentAssembly>
                <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0" />
              </dependentAssembly>
              <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
              </dependentAssembly>
            </assemblyBinding>
          </runtime>
        • #
          ‫۹ سال و ۶ ماه قبل، دوشنبه ۳ فروردین ۱۳۹۴، ساعت ۰۴:۵۷
          - برنامه نیازی به run as admin ندارد. فقط در حالت فعال سازی allow remote connections آن (قرار دادن برنامه در یک سیستم دیگر و اتصال از راه دور به آن) نیاز به run as admin هست.
          - اگر نیاز به run as admin بوده یعنی attribute فایل‌ها احتمالا توسط مرورگر (اگر از download manager استفاده نکرده‌اید)، تغییر کرده‌اند.
  • #
    ‫۹ سال و ۶ ماه قبل، یکشنبه ۲ فروردین ۱۳۹۴، ساعت ۰۷:۵۲
    با سلام و تبریک سال نو
    نرمافزار تو ویندوز 8.1 کارنمیده
    فایل ErrorsLog ظاهرا ایجاد نشد
    windows 8.1 64bit,vs2013sp4
    • #
      ‫۹ سال و ۶ ماه قبل، یکشنبه ۲ فروردین ۱۳۹۴، ساعت ۱۷:۳۷
      - لطفا نگارش جدید را دریافت کنید (^). فایل System.Net.Http.Formatting.dll فراموش شده بود. 
      • #
        ‫۹ سال و ۶ ماه قبل، دوشنبه ۳ فروردین ۱۳۹۴، ساعت ۰۲:۵۶
        در نسخه جدید نیز در حالت please wait loading  فرم قرار میگیرد. 
        که با اضافه کردن خط  زیر در فایل کانفیگ مشکل حل میشود
        <loadFromRemoteSources enabled="true"/>
        • #
          ‫۹ سال و ۶ ماه قبل، دوشنبه ۳ فروردین ۱۳۹۴، ساعت ۰۴:۲۱
          البته loadFromRemoteSources مربوط است به بارگذاری اسمبلی‌ها برای مثال از یک درایو به اشتراک گذاشته شده‌ی در شبکه. فایل‌های کپی شده‌ی از اینترنت هم چنین نیازی را دارند. به این معنا که attribute فایل‌ها احتمالا توسط مرورگر (اگر از download manager استفاده نکرده‌اید)، تغییر کرده‌اند.
  • #
    ‫۹ سال و ۶ ماه قبل، جمعه ۷ فروردین ۱۳۹۴، ساعت ۱۶:۱۲
    با سلام و عرض تبریک به مناسبت سال جدید و همچنین تشکر ویژه برای ارائه این Profiler عالی که برای استفاده از نوع غیربومی همیشه دچار مشکل بودیم. واقعا عیدی خوبی بود. با آرزوی موفقیت برای همه‌ی دوستان در سال جدید.
  • #
    ‫۹ سال و ۶ ماه قبل، شنبه ۸ فروردین ۱۳۹۴، ساعت ۱۷:۴۰
    سلام و عرض تبریک سال نو
    بعد از راه اندازی کلاینت زمانی که اپلیکیشن رو اجرا میکنم با ارور زیر مواجه میشم:

    • #
      ‫۹ سال و ۶ ماه قبل، شنبه ۸ فروردین ۱۳۹۴، ساعت ۱۷:۴۷
      - لطفا برای طرح سؤالات و ارائه‌ی پیشنهادات خود در زمینه‌ی این پروژه، به قسمت اختصاصی آن در سایت مراجعه نمائید: https://www.dntips.ir/projects/details/21
      - استثناءها را با تصویر ارائه ندهید. اصل متنی استثناء، بهتر قابلیت پیگیری دارد.
      خطاهای برنامه در فایل متنی به نام ErrorsLog.Log در کنار فایل اجرایی برنامه ثبت می‌شوند.  
      - سورس را اجرا کردید یا اصل برنامه‌ی توزیع شده را؟ به نظر سورس را اجرا کرده‌اید. آیا بسته‌های نیوگت آن‌را به درستی بازیابی کرده‌اید؟ آیا از فایل Microsoft.SqlServer.TransactSql.ScriptDom با شماره نگارش صحیحی استفاده می‌کنید که پیام داده‌است متدهای آن یافت نشدند؟
      <package id="Microsoft.SqlServer.TransactSql.ScriptDom" version="12.0.1" targetFramework="net40" />
      این فایل‌ها به همراه بسته‌ی توزیع شده وجود دارند.
  • #
    ‫۹ سال و ۵ ماه قبل، شنبه ۲۹ فروردین ۱۳۹۴، ساعت ۱۳:۲۹
    سلام؛ در لایه وب این پروژه ، با استفاده از کنسول نیوگت،بسته زیر رو نصب کردم : DNTProfiler.EntityFramework.Core
    سپس تنظمیات مورد نظر در فایل web.config رو اعمال کردم که البته مشکلی در اجرای پروژه به وجود نمیاد ولی با نگه داشتن ماوس روی تگ <interceptors> ، با پیغام زیر مواجه میشم :
    the element entityframework has invalid chid element iterceptors
    وقتی برنامه DNT Profiler رو اجرا میکنم متاسفانه هیچ اطلاعاتی در مورد پروژه ام بهم نشون نمیده. حتی با تعویض پورت هم مسئله حل نشد.
    • #
      ‫۹ سال و ۵ ماه قبل، شنبه ۲۹ فروردین ۱۳۹۴، ساعت ۱۴:۲۳
      - برنامه‌ی DNT Profiler باید پیش از اجرای برنامه‌ی وب شما اجرا شود و نه پس از آن.
      + خطاهای DNTProfiler.EntityFramework.Core داخل فایل App_Data \ErrorsLog.Log ثبت می‌شوند. این فایل را بررسی کنید.
  • #
    ‫۹ سال و ۵ ماه قبل، سه‌شنبه ۸ اردیبهشت ۱۳۹۴، ساعت ۰۴:۳۵
    با سلام و تشکر به خاطر این نرم افزار مفید.
    نرم افزار و پکت‌های اون برای EntityFramework در دو حالت وب و ویندوز درست عمل می‌کند ولی برای NHibernate فقط در حالت ویندوزی درست عمل میکند و در حالت وبی، موقع فراخوانی BuildSessionFactory به اکسپشن زیر برخورد میکنم:
    Could not create the driver from DNTProfiler.NHibernate.Core.Drivers.ProfiledSql2008ClientDriver,DNTProfiler.NHibernate.Core
    و بعد از لود صفحه‌ی وب اکسپشن زیر نمایش داده می‌شود:
    exePath must be specified when not running inside a stand alone exe
    با سرچی که انجام دادم به نظر می‌رسد به پکت نیوگت NHibenate این نرم افزار و نحوه‌ی کار با Configuration manager در کانتکست وبی و ویندوزی مربوط باشد.
    • #
      ‫۹ سال و ۵ ماه قبل، سه‌شنبه ۸ اردیبهشت ۱۳۹۴، ساعت ۰۶:۰۳
      ممنون. این مشکل برطرف شد و با نگارش بعدی ارائه می‌شود.
      • #
        ‫۹ سال و ۵ ماه قبل، چهارشنبه ۹ اردیبهشت ۱۳۹۴، ساعت ۰۲:۳۶

        کد برنامه را دریافت کردم و به روز رسانی‌های لازم را انجام دادم. این خطا برطرف شده است. خیلی ممنون.

        آیا این پروفایلر امکان دریافت درخواست هایی که از طریق سرویس‌های wcf به پایگاه داده ارسال میشوند را هم دارد؟ یا می‌تواند داشته باشد؟ (البته این سوال صرفاً جنبه‌ی تئوریک دارد.) 

        • #
          ‫۹ سال و ۵ ماه قبل، چهارشنبه ۹ اردیبهشت ۱۳۹۴، ساعت ۰۳:۳۹
          در اینجا فناوری مورد استفاده مهم نیست. همینقدر که از EF یا NH استفاده شده باشد، کار می‌کند.
  • #
    ‫۹ سال و ۲ ماه قبل، سه‌شنبه ۶ مرداد ۱۳۹۴، ساعت ۰۱:۵۳
    سلام. من آخرین نگارش این پروفایلر رو دانلود کردم. وقتی برنامه رو اجرا میکنم و کار Intercept رو انجام میده در قسمت Alert بخشی هست به نام Non-Disposed Connections که عدد 9 رو نشون میده اما وقتی روی جزئیات یک Connection میرم یه همچین کوئری داده : 
    IF db_id(N'test') IS NOT NULL
        SELECT 0;
    ELSE
        SELECT Count(*)
        FROM   sys.databases
        WHERE  [name] = N'test'
    که اصلا به دیتابیس من مربوط نمیشه و ظاهرا مربوط به EF هست و در بعضی از کوئری‌ها مربوط به جدول MigrationHistory . و یا در تب Context in multiple Threads عدد 14 رو نشون میده که باز مربوط به EF یا Migrations هست. میخواستم ببینم که این موارد تاثیری روی برنامه داره یا کلا عادی هستش؟
    • #
      ‫۹ سال و ۲ ماه قبل، سه‌شنبه ۶ مرداد ۱۳۹۴، ساعت ۰۲:۴۱
      عادی هستند و مهم نیستند؛ چون EF در ابتدای کار خودش، تمام رویدادهای باز و بسته شدن اتصالات را به interceptorها ارسال نمی‌کند.
  • #
    ‫۸ سال و ۲ ماه قبل، پنجشنبه ۷ مرداد ۱۳۹۵، ساعت ۰۶:۴۴
    سلام ابتدا با تشکر از کار خوبتون
    من آخرین نسخه پروژه گرفتم ولی با خطای زیر روبرو میشم، ظاهرا برنامه پروفایلر Distinct پشتیبانی نمی‌کنه - ویندوز 10 - EF 6.1.3- ویژوال استودیو 2015

    • #
      ‫۸ سال و ۲ ماه قبل، پنجشنبه ۷ مرداد ۱۳۹۵، ساعت ۱۳:۳۰
      - لطفا برای طرح سؤالات و ارائه‌ی پیشنهادات خود در زمینه‌ی این پروژه، به قسمت اختصاصی آن در سایت مراجعه نمائید:
      https://www.dntips.ir/projects/details/21 
      - نیاز است stack trace کامل را ارسال کنید. این استثناء دقیقا از کجا صادر شده‌است؟ دقیقا کدام متد این پروژه این استثناء را صادر کرده‌است؟
      +
      این پروژه چون از interceptors خود EF استفاده می‌کند، به هیچ عنوان دخالتی در نحوه‌ی اجرای متدهای آن ندارد. خطایی را که دریافت کردید مربوط است به خود EF و نه این پروژه. برای آزمایش، آن‌را غیرفعال کنید (مداخل وب کانفیگ آن‌را کامنت کنید) و بعد برنامه را اجرا کنید.
      Supported and Unsupported LINQ Methods (LINQ to Entities)  
  • #
    ‫۵ سال و ۱۱ ماه قبل، سه‌شنبه ۱۰ مهر ۱۳۹۷، ساعت ۱۹:۴۷
    مشابه این کامپوننت در dot net core چه میباشد؟