عملياتي برنامه وب را مشخص مي نمايد .
ASP.NET Applications
* Errors Total
تعداد خطاء توليد شده توسط يك برنامه وب را مشخص مي نمايد . مقدار اين counter در عمل مي بايست صفر و يا نزديك به صفر باشد .
ASP.NET Applications
Pipeline Instance Count
تعداد درخواست pipeline يك برنامه را مشخص مي نمايد و از آن براي مشخص شدن حداكثر درخواست همزماني كه مي توان به آنها پاسخ داده شود ، استفاده مي گردد .
در صورتي كه مقدار اين counter تحت يك load پائين باشد ، نشان دهنده استفاده مطلوب از CPU است .
System
* Context Switches/sec
پارامتر فوق تعداد دفعات سوئيچينگ thread context را نشان مي دهد . در صورتي كه مقدار اين پارامتر زياد باشد ، thread هاي مختلف براي استفاده از يك منبع محدود با يكديگر رقابت مي نمايند .
جدول 1 : ليست برخي كانترهاي مفيد
دستيابي به كلاس هاي performance counters از طريق كد
با توجه به اين كه ASP.NET بخشي از فريمورك دات نت است ، پياده كنندگان برنامه هاي وب مي توانند در صفحات وب نوشته شده با استفاده از فناوري ASP.NET به تمامي كلاس هاي موجود در فريمورك دات نت دستيابي داشته باشند . اين بدان معني است كه از طريق يك صفحه وب ASP.NET مي توان عمليات متعددي نظير پردازش تصاوير ، نوشتن در event log و يا خواندن و انعكاس performance counters در خروجي را انجام داد . گرچه استفاده از امكاناتي از اين قبيل ممكن است چالش هاي امنيتي مختص به خود را دارا باشد ولي با رعايت نكات ايمني مي توان پتانسيل برنامه هاي وب را در جهت ارائه خدمات مطلوب و بهينه به كاربران افزايش داد .
به عنوان نمونه مي توان يك performance counter جديد را اضافه و يا مقدار متناظر با يك performance counter را بازيابي و در ادامه آن را در يك صفحه وب و يا يك برنامه desktop نمايش داد .
براي استفاده از پتانسيل فوق ، از namespace با نام System.Diagnostics استفاده مي گردد . ليست برخي از كلاس هاي دات نت به منظور تعامل با performance counter در جدول 2 نشان داده شده است .
كلاس
عملكرد
PerformanceCounter
ارائه يك counter خاص كه شامل اطلاعاتي نظير نام counter و نوع داده ئي است كه مي بايست ثبت گردد .
PerformanceCounterCategory
يك گروه counter را كه شامل يك و يا چندين counter است ، مشخص مي نمايد .
CounterCreationData
ارائه داده مورد نياز براي ايجاد يك counter جديد .
CounterSample
ارائه مجموعه اي از اطلاعات ثبت شده توسط counter .
در اين رابطه يك RawValue ( شماره ثبت شده ) ، يك TimeStamp ( زماني كه مقدار ثبت شده است ) و اطلاعات اضافه اي در رابطه با نوع counter و نحوه خواندن آن را ارائه مي نمايد .
جدول 2 : ليست برخي كلاس هاي دات نت براي كار با Performance counter
مثال : نمايش ظرفيت آزاد حافظه فيزيكي در يك صفحه وب
در كد فوق ، ظرفيت آزاد حافظه فيزيكي بر حسب مگابايت در صفحه وب نمايش داده مي شود . براي انجام اين كار ، در ابتدا يك نمونه از كلاس PerformanceCounter به همراه نام گروه Memory و counter با نام Available MBytes ايجاد شده است . براي ايجاد يك نمونه از كلاس PerformanceCounter از كد زير استفاده شده است .
Dim perfFreeMem as New PerformanceCounter(“Memory”, “Available MBytes”)
بدين ترتيب يك شي با نام perfFreeMem ايجاد كه Performance counter مورد نظر را ارائه مي نمايد . براي خواندن مقدار جاري counter از متد NextValue استفاده مي گردد تا مقدار بعدي Performance counter را برگرداند . با نسبت دادن مقدار برگردانده شده به خصلت Text كنترل سرويس دهنده Label ، امكان مشاهده آن در خروجي فراهم مي گردد .
%@ Import Namespace = System.Diagnostics %

Free Memory (in MB):

مراحل انجام كار در مثال فوق به شرح زير است :
مرحله اول : استفاده از namespace با نام System.Diagnostics در ابتداي برنامه
مرحله دوم : ايجاد و مقداردهي مناسب يك نمونه از كلاس PerformanceCounter تا قادر به خواندن counter با نام Available MBytes از گروه Memory باشد .
مرحله سوم : نسبت دادن مقدار برگردانده شده توسط متد NextValue به خصلت Text كنترل سرويس دهنده label با نام lblFreeMem
در بخش چهارم به بررسي امكانات caching در ASP.NET 2.0 خواهيم پرداخت .

افزايش كارآئي برنامه هاي وب در ASP.NET 2.0 (بخش چهارم)
در بخش هاي اول و دوم به مجموعه اي از نكات اشاره گرديد كه رعايت آنها در زمان طراحي مي تواند زمينه پياده سازي يك برنامه وب كارآ را فراهم نمايد . در بخش سوم به امكانات و ابزارهاي موجود براي تست برنامه هاي وب اشاره گرديد.
در اين بخش به بررسي امكانات caching در ASP.NET 2.0 خواهيم پرداخت .
مفاهيم اوليه Caching
Caching از جمله واژه هاي كاملا” آشنا در عرصه فناوري اطلاعات و ارتباطات است . اين واژه ريشه فرانسوي‌ دارد و به معني ذخيره سازي است . در دنياي پردازش اطلاعات ، به ذخيره اطلاعات براي استفاده آتي اطلاق مي گردد .در واقع ، Caching فرآيندي است كه بر اساس آن داده با فركانس استفاده بالا به منظور پاسخ به درخواست هاي بعدي ذخيره مي گردد. اطلاعات ذخيره شده ممكن است در آينده مجددا” استفاده گردند و يا اين احتمال وجود خواهد داشت كه هرگز شرايط استفاده مجدد از آنها فراهم نگردد . بنابراين Cache صرفا” زماني مفيد خواهد بود كه هزينه ذخيره اطلاعات كمتر از هزينه بازيابي و يا محاسبه مجدد آنها باشد .
امروزه از مفهوم Caching در زمينه هاي متعددي در سيستم هاي كامپيوتري و شبكه اي استفاده مي گردد . پردازنده هاي كامپيوتر داراي cache اختصاصي براي داده و دستورالعمل ها مي باشند . سيستم هاي عامل داراي بافرهاي cache براي سيستم هاي فايل و درايوها مي باشند . سيستم هاي فايل توزيع شده ( شبكه اي ) نظير NFS ( برگرفته شده از network file system ) و AFS ( برگرفته شده از Andrew File System ) براي بهبود كارآئي خود از cache استفاده مي نمايند . روترهاي بكارگرفته شده در ستون فقرات شبكه اينترنت مسيرهائي را كه اخيرا” از آنها استفاده كرده اند ، cache مي نمايند . سرويس دهندگان DNS ، ماحصل فرآيند ترجمه نام به آدرس را جهت استفاد آتي cache مي نمايند .
برنامه هاي كامپيوتري خصوصا” برنامه هاي وب نيز از اين فناوري در ابعاد گسترده اي استفاده مي نمايند تا بتوانند با سرعت بيشتر پاسخگوي نياز كاربران و مخاطبان خود باشند . به عنوان نمونه ، مرورگر با ارائه پتانسل هاي لازم سمت سرويس گيرنده امكان caching متن و يا تصاوير را فر اهم مي نمايد و در سمت سرويس دهنده با استفاده از امكانات متعددي مي توان بهترين گزينه caching را به منظور افزايش كارائي انتخاب كرد.
در صورتي كه از روش هائي مناسب به منظور پياده سازي سيستم Caching در برنامه هاي كامپيوتري استفاده گردد ، كارائي و توانمندي آنها در جهت ارائه خدمات به كاربران بطرز محسوسي افزايش خواهد يافت .
روش هاي caching در ASP.NET
با عرضه ASP.NET 2.0 تحولات گسترده اي در خصوص cache ايجاد گرديد . پياده كنندگان برنامه هاي وب با آشنائي و بكارگيري پتانسيل هاي موجود مي توانند برنامه هاي وب با كارآئي مطلوب را پياده سازي نمايند .
در ASP.NET از دو نوع سيستم caching استفاده مي گردد . پياده كنندگان برنامه هاي وب مي توانند و شايد بهتر باشد بگوئيم مي بايست از دو سيستم فوق در جهت افزايش كارآئي برنامه هاي خود استفاده نمايند ، چراكه دو سيستم فوق مكمل يكديگر مي باشند .
Output caching ، ساده ترين روش caching است . صفحات aspx . بر اساس فرآيندي در سمت سرويس دهنده ترجمه و پس از اجراء ، ماحصل خروجي آنها به صورت يك صفحه html براي سرويس گيرنده ارسال مي گردد . در اين روش يك نسخه نهائي از صفحه ترجمه شده html كه براي سرويس گيرنده ارسال شده است ، cache مي گردد . بدين ترتيب ، زماني كه سرويس گيرنده بعدي درخواست خود براي استفاده از اين صفحه را براي سرويس دهنده ارسال مي نمايد ، در مقابل اجراي صفحه و توليد خروجي لازم ( انجام پردازش هاي سمت سرويس دهنده با توجه به ماهيت و جايگاه عملكردي يك صفحه در يك برنامه وب ) ، صفحه ترجمه شده html بطور اتوماتيك براي وي ارسال مي گردد . بدين ترتيب ، مدت زماني كه لازم است صفحه به همراه كد درون آن ترجمه و اجراء گردد بطور كامل حذف مي گردد .
Data caching : براي استفاده از اين روش مي بايست بطور دستي و از طريق كد شرايط آن را فراهم نمود . پياده كنندگان مي توانند بخش هاي مهمي از اطلاعات را كه زمان زيادي صرف ساختن آنها شده است ( نظير يك DataSet بازيابي شده از يك بانك اطلاعاتي ) را در cache ذخيره نمايند . در ادامه ، ساير صفحات مي توانند وجود اين اطلاعات را بررسي و در صورت موجود بودن در cache از آنها استفاده نمايند . بدين ترتيب ، مراحل مورد نياز براي بازيابي اطلاعات حذف خواهد شد روش فوق از لحاظ مفهومي شباهت زيادي به استفاده از application state دارد ولي داراي قابليت هاي بيشتري در سمت سرويس دهنده است . به عنوان نمونه زماني كه حجم داده بگونه اي زياد گردد كه كارآئي يك برنامه را تحت تاثير قرار دهد ، آيتم هاي موجود در cache بطور اتوماتيك از cache حذف خواهند شد . براي ذخيره آيتم ها در cache مي توان يك تاريخ را مشخص تا پس از سپري شدن زمان مورد نظر بطور اتوماتيك از حافظه حذف گردند .
علاوه بر روش هاي كلي فوق ، دو نوع خاص ديگر از caching بر اساس مدل هاي اشاره شده نيز ايجاد شده است :
Fragment caching : روش فوق نوع خاصي از output caching است و در مقابل caching كد Html براي تمامي صفحه ، صرفا” بخش هائي خاص از كد cache مي گردد. در اين روش خروجي كد ترجمه شده Html مربوط به يك كنترل كاربر بر روي يك صفحه ذخيره مي گردد . بدين ترتيب در صورت اجراء مجدد صفحه ، كد موجود در صفحه اجراء‌ مي گردد و ضرورتي به اجراء كد مرتبط با كنترل كاربر نخواهد بود .
Data source caching : اين نوع caching بر اساس كنترل هاي منبع داده ايجاد و شامل كنترل هاي منبع داده ObjectDataSource ، SqlDataSource و XmlDataSource مي باشد. از لحاظ فني ، در روش فوق از data caching استفاده مي گردد. تنها تفاوت موجود در اين رابطه ، عدم نياز به انجام پردازش هاي مورد نياز توسط پياده كننده است . بدين منظور لازم است كه برخي خصلت ها و پيام هاي كنترل منبع داده كه مسئوليت ذخيره و بازيابي caching را برعهده دارند ،‌ توسط پياده كنندگان پيكربندي گردد.
در اين بخش و ساير بخش هاي بعدي به ترتيب به بررسي موارد زير خواهيم پرداخت :
output caching
data caching
caching در كنترل هاي منبع داده
SQL cache dependency
نحوه استفاده از output caching
با استفاده از output caching ، نسخه نهائي كد ترجمه شده Html صفحه cache مي گردد . زماني كه صفحه مجددا” و توسط كاربر ديگر درخواست مي گردد ، اشياء ايجاد نخواهند شد . همچنين ، چرخه حيات صفحه آغاز نخواهد شد و هيچگونه كدي اجراء نمي گردد . در مقابل ، كد cache شده در اختيار متقاضيان بعدي قرار داده مي شود . با توجه به اين كه در روش output caching هزينه هاي بالا سري كد ( پردازش هاي اضافه ) حذف مي گردد ، كارآئي برنامه بطرز محسوسي افزايش خواهد يافت .
براي آشنائي با نحوه عملكرد output caching ، كد زير را كه زما

دیدگاهتان را بنویسید