الاثنين، 11 يوليو 2011

كيف تستخدم الأداة SPDisposeCheck

الهدف من الأداة SPDisposeCheck
تُستخدم هذه الأداة للتأكد من أن الشيفرة المكتوبة في المجمعات Assemblies لا تحتوي على ما سيسبب مشاكل غير متوقعة في ذاكرة الخادم التي تعمل عليها التطبيقات أو ما يسمى بـ Memory Leaks.

متى يجب استخدام هذه الأداة
يجب استخدام هذه الأداة من قبل المطورين الذين يستخدمون واجهة برمجة التطبيقات API دائماً قبل إطلاق العمل للمستخدم النهائي وذلك لتجنب أي مشكلة في ذاكرة الخادم Server RAM.

كيف يتم استخدام هذه الأداة
1 - يفضل دائماً قبل استخدام هذه الأداة الحصول على الإصدار الأخير منها على الرابط التالي:


2 - الأداء هي عبارة عن ملف تنفيذي EXE File يجب تنفيذه ليتم تركيب الأداة على جهازك.










3 - بعد الانتهاء من الخطوات السابقة (يمكن تجاوز الخطوة رقم 2 في حال أن الأداة موجودة مسبقاً على جهازك), نفذ الآن الخطوات التالية لتنفيذ عملية اختبار المجمعة Assembly التي تستخدم واجهة برمجة التطبيقات لشيربوينت SharePoint API:

- افتح منفذ الأوامر Command Line ونفذ الأمر التالي:

cd C:\Program Files (x86)\Microsoft\SharePoint Dispose Check


ملاحظة: المسار الذي تم وضعه في الأمر السابق قد يتغير حسب المستخدم أو يمكن أن تغييره أثناء عملية تركيب الأداة على جهازك.

- الآن نفذ الأمر التالي لفحص الشيفرة في إحدى المجمعات Assembly كما يلي:

SPDisposeCheck.exe DLL_PATH >> c:\disposeReport.txt

علماً أن DLL_PATH هو المسار الكامل للمجمعة على جهازك. أما بالنسبة للمسار c:\disposeReport.txt فهو اختياري ولكن يفضل استخدام هذه الطريقة لكي يتم تخزين جميع نتائج الاختبار في ملف نصي بدلاً من عرضه على الشاشة.

- بعد الانتهاء من تنفيذ الأمر السابق افتح الملف النصي الذي تم تحديده في الأمر السابق. حيث سيحتوي هذا الملف على جميع الملاحظات إضافة إلى العدد الإجمالي لهذه الملاحظات.

4 - جميع الملاحظات التي تكون نتيجة استخدام هذه الأداة تتعلق باستخدام التابع Dispose أو العبارة using عند الوصول إلى كائن Object باستخدام واجهة برمجة التطبيقات SharePoint API, إضافة إلى ذلك فليس بالضرورة أن جميع الملاحظات التي ستظهر يجب حلها وذلك بناء على الوثائق التي تتحدث عن هذه الأداة, لذلك يجب عدم التعديل على الشيفرة المتعلقة بالشيربوينت قبل التأكد منها.

هناك 3 تعليقات:

  1. Thanks Ismail for your nice article.

    This is a nice tool from microsoft to find out the undisposable objects but it's not accurate (100%) so you can also use Reflector Pro version to debug your code and trace undisposable objects inside your code and Microsoft.SharePoint.Dll.

    ردحذف
  2. من التجربة، هذه الأداة مفيدة ولكن لا تظهر دائما المشاكل، حيث تم تجربتها مسبقا وأوضحت عدم وجود خطأ بينما أظهر SharePoint Log وجود أخطاء في نفس الـ Assembly، أيضا قد يسبب PortalSiteMapProvider Class مشاكل تسريب للذاكرة، ولا تستطيع هذه الأداة اكتشافها لأنها لا تستخدم SPSite و SPWeb بشكل مباشر.

    ردحذف
  3. Nice tool I think it should be considered as part of reviewing stage before deploying solutions to production

    Thank you

    ردحذف