مقاله افزایش کارآئی برنامه های وب در ASP.NET 2.0


در حال بارگذاری
12 سپتامبر 2024
فایل ورد و پاورپوینت
2120
9 بازدید
۷۹,۷۰۰ تومان
خرید

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

  مقاله افزایش کارآئی برنامه های وب در ASP.NET 2.0 دارای ۱۲۸ صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

فایل ورد مقاله افزایش کارآئی برنامه های وب در ASP.NET 2.0  کاملا فرمت بندی و تنظیم شده در استاندارد دانشگاه  و مراکز دولتی می باشد.

توجه : در صورت  مشاهده  بهم ریختگی احتمالی در متون زیر ،دلیل ان کپی کردن این مطالب از داخل فایل ورد می باشد و در فایل اصلی مقاله افزایش کارآئی برنامه های وب در ASP.NET 2.0،به هیچ وجه بهم ریختگی وجود ندارد


بخشی از متن مقاله افزایش کارآئی برنامه های وب در ASP.NET 2.0 :

افزایش کارآئی برنامه های وب در ASP.NET 2.0

( بخش اول )
یکی از ملزومات کلیدی در هر نوع برنامه کامپیوتری میزان کارائی و قابلیت پاسخگوئی سریع آن به کاربران است . طراحان و پیاده کنندگان برنامه های کامپیوتری می بایست در زمان طراحی ، پیاده سازی و نوشتن کد به این موضوع توجه جدی داشته باشند.
برنامه های وب با توجه به ماهیت و رسالت خود می بایست قادر به ارائه خدمات مورد نیاز به صدها و یا هزاران متقاضی همزمان به سادگی و با سرعت مطلوب باشند. به عبارت دیگر ، همزمان با افزایش کاربران نمی بایست شاهد افت سرعت و کارآئی یک برنامه وب باشیم .

با ارائه فریمورک دات نت و به دنبال آن ASP.NET ، پیاده سازی یک برنامه وب بطرز ناباورانه ای ساده شده است . همین موضوع باعث شده است که طراحان و پیاده کنندگان بیشتر در اندیشه طراحی و پیاده سازی سریع برنامه های وب باشند و به مسائل مربوط به کارآئی برنامه کمتر توجه نمایند .
پیاده کنندگان برنامه های وب با استفاده از فناوری ASP.NET می بایست با بکارگیری مجموعه ای از ترفندها ، فناوری ها و رعایت برخی نکات کلیدی اقدام به پیاده سازی برنامه های وب با کارآئی بالا نمایند .

در این مقاله و سایر مقالاتی که در آینده منتشر خواهد شد قصد داریم به برخی از روش های موجود به منظور طراحی و پیاده سازی یک برنامه وب کارآ اشاره نمائیم . بدین منظور بر روی سه محور اساسی زیر متمرکز خواهیم شد :
• طراحی برای کارآئی : در این رابطه به مجموعه ای از نکات کلیدی اشاره خواهیم کرد که رعایت آنها در زمان طراحی می تواند زمینه پیاده سازی یک برنامه وب کارآ را فراهم نماید .

• تست برنامه قبل از عملیاتی شدن آن : یکی از مسائل مهم در ارتباط با برنامه های وب ، عدم تست آنها با شرایط مشابه و یا نزدیک به محیط واقعی است . در این راستا می توان از نرم افزارها و یا ابزارهای مختلفی استفاده کرد تا بتوان عملکرد و سرویس دهی یک برنامه وب را قبل از زیر بار رفتن واقعی مشاهده و بررسی نمود . شرکت مایکروسافت در این رابطه ابزارها و برنامه های متعددی را ارائه نموده است که به بررسی آنها خواهیم پرداخت .
• پیاده سازی سیستم caching : با پیاده سازی سیستم caching در سطوح متفاوت و caching داده می توان کارآئی برنامه های وب را بطرز کاملا” محسوسی افزایش داد. در این بخش به نحوه پیاده سازی سیستم caching در برنامه های وب اشاره خواهیم کرد .
در ادامه بر روی اولین محور متمرکز و به بررسی مسائل مرتبط با آن خواهیم پرداخت .

طراحی برای کارآئی
توجه و رعایت موارد زیر پیاده کنندگان را در جهت پیاده سازی برنامه های وب با کارآئی بالا کمک خواهد کرد :
مکانیزم ترجمه کد در ASP.NET
برنامه های نوشته شده با استفاده از ASP.NET دارای کارآئی بمراتب بیشتری نسبت به برنامه های نوشته شده با استفاده از ASP کلاسیک می باشند . این دستاورد ناشی از ترجمه اتوماتیک کد در ASP.NET است . در صفحات قدیمی نوشته شده با استفاده از ASP کلاسیک ، کدها و یا اسکریپت های موجود در یک صفحه برای هر یک از درخواست های کاربران پردازش می گردید . در ASP.NET ، هر کلاس صفحه در اولین مرتبه دستیابی کمپایل و برای درخواست های آتی cache می گردد .

زمانی که اولین مرتبه یک کاربر صفحه ای را درخواست می نماید ( و یا اولین مرتبه دستیابی پس از ایجاد تغییرات در صفحه ) ، یک تاخیر قابل ملاحظه در زمان پاسخ به درخواست خود را مشاهده می نماید ( تاخیر ناشی از ترجمه صفحه ) . برای برخورد با این موضوع می توان از روش precompilation استفاده نمود . با استفاده از روش فوق پس از استقرار صفحات بر روی سرویس دهنده وب ، بلافاصله امکان درخواست و بازیابی سریع آنها برای متقاضیان فراهم می گردد .
کنترل های سرویس دهنده
کنترل های سرویس دهنده عناصر اصلی در یک صفحه ASP.NET می باشند و load زیادی را به برنامه تحمیل نخواهند کرد . این نوع کنترل ها معمولا” دارای کارآئی بمراتب بهتری نسبت به زمانی می باشند که یک صفحه به صورت پویا و با استفاده از ترفندهائی نظیر متد Response. Write خروجی خود را تولید می نماید.

در برخی موارد ضرورتی به استفاده از کنترل های سرویس دهنده ASP.NET در یک صفحه وب نخواهیم داشت . به عنوان نمونه ،‌ در صورتی که دارای یک متن ایستا می باشیم که هرگز ضرورتی به دستیابی و تغییر آن در زمان اجراء و از طریق کد نداریم ، لزومی به استفاده از کنترلی نظیر label نخواهیم داشت . در چنین مواردی می توان به سادگی متن مورد نظر را با استفاده از امکانات HTML در فایل aspx. قرار داد . در ویژوال استودیو می توان از کنترل DIV ( موجود در بخش HTML ، منوی Toolbox) استفاده کرد. در واقع ما تکلیف متن مورد نظر جهت نمایش در یک صفحه aspx . را نه در زمان اجراء بلکه در زمان طراحی مشخص کرده ایم .

یکی دیگر از نکات مهم در زمان استفاده از کنترل های سرویس دهنده در صفحات وب ، توجه به رفتار آنها در ارتباط با نگهداری داده پس از ارسال مجدد به سرویس دهنده می باشد . به صورت پیش فرض ، مقادیر مرتبط با کنترل های سرویس دهنده نظیر مقدار درج شده در یک TextBox ، پس از postback بطور اتوماتیک در view state ذخیره می گردد . در واقع ، view state مکانیزمی برای نگهداری داده کنترل های سرویس دهنده است که هدف آن غلبه بر محدودیت پروتکل HTTP است ( ماهیت stateless ) .

view state ، یک نام مناسب برای ذخیره داده در یک فیلد ورودی مخفی درون صفحه است . پس از post back ( ارسال مجدد برای‌ سرویس گیرنده ) یک صفحه ، سرویس دهنده قادر به بررسی مقادیر نگهداری شده در view state و استفاده از آنها با توجه به شرایط حاکم بر برنامه می باشد . view state یک قابلیت عالی است چراکه اجازه نگهداری وضعیت را با استفاده از امکانات سرویس گیرنده فراهم می نماید و در این رابطه از کوکی و حافظه سرویس دهنده برای ذخیره وضعیت استفاده نمی گردد .

تعداد زیادی از کنترل های سرویس دهنده ASP.NET از view state برای نگهداری تنظمیات خود در زمان تعامل با عناصر موجود بر روی صفحه استفاده می نمایند ( مثلا” ذخیره صفحه جاری در زمان استفاده از ویژگی paging در کنترل سرویس دهنده gridview ) .
در زمان استفاده از view state توجه به موارد زیر ضروری است :
• playload صفحه را در زمان درخواست و ارائه افزایش می دهد .
• افزایش overhead در زمان serializing و deserializing داده ذخیره شده در view state که برای سرویس دهنده post-back شده است .

• افزایش تخصیص حافظه بر روی سرویس دهنده
کنترل های سرویس دهنده علاقه زیادی به استفاده از view state دارند حتی در مواردی که به وجود آن نیاز نمی باشد . به صورت پیش فرض viewstate فعال است و در صورت عدم نیاز می بایست آن را در سطح صفحه و یا کنترل غیرفعال نمود . در رابطه با یک کنترل کافی است که خصلت EnableViewState را false و یا می توان آن را به صورت سراسری و در سطح page غیر فعال نمود . دستور زیر نحوه انجام این کار را نشان می دهد :
<%@ Page EnableViewState=”false” %>

برای غیر فعال کردن view state در سطح صفحه و یا کنترل از قوانین زیر می توان استفاده نمود :
• در صورتی که در صفحه ای post back انجام نمی گیرد و یا صفحه می بایست همواره برای هر یک از کنترل های موجود بر روی صفحه و به ازاء هر درخواست مجددا” تولید گردد ، می بایست view state را در سطح page غیر فعال نمود .
• در صورتی که ضرورتی به نگهداری داده مرتبط با یک کنترل سرویس دهنده در view state نمی باشد می بایست آن را برای کنترل مورد نظر غیر فعال نمود . بدین منظور لازم است که مقدار EnableViewState مربوط به کنترل معادل False در نظر گرفته شود .
• در صورتی که کنترل در زمان طراحی مقداردهی شده است و در زمان اجراء مقدار آن تغییر نمی یابد ، خصلت EnableViewState آن می بایست false در نظر گرفته شود .

• در صورتی که کنترل با هر post back ، مجددا” خوانده شده و refresh می گردد و ضرورتی به نگهداری مقدار داده قبلی وجود نداشته باشد ، خصلت EnableViewState آن می بایست false در نظر گرفته شود .
• در صورتی که لازم است انتخاب کاربر پس از postback صفحه بازیابی گردد ، می بایست view state را برای کنترل مورد نظر فعال کرد.
view state ، عموما” کند شدن سرویس دهنده را به دنبال نخواهد داشت بلکه حجم صفحه را افزایش داده و مدت زمان ارسال صفحه برای سرویس گیرنده را زیاد خواهد کرد . در چنین مواردی کاربران این برداشت را خواهند داشت که برنامه کند و قادر به ارائه پاسخ سریع به آنان نمی باشد ، خصوصا” در مواردی که ارتباط بین سرویس گیرنده و سرویس دهنده از طریق یک خط با سرعت پائین برقرار شده باشد .

عدم استفاده صحیح از view state در برخی موارد می تواند ادامه حیات موثر یک برنامه وب را با چالش جدی مواجه نماید . این موضوع در برنامه هائی که از کنترل های زیادی در یک صفحه استفاده و حجم بالائی از داده را در خود نگهداری می نمایند، مضاعف می گردد. در چنین مواردی داده دو مرتبه به صفحه وب اضافه می گرد : مستقیما” در کد HTML مرتبط با کنترل و مجددا” در یک فیلد مخفی برای view state . داده فوق با هر post back بین سرویس گیرنده و سرویس دهنده مبادله می گردد .
با استفاده از page tracing می توان از تعداد بایتی که view state مصرف می کند آگاهی یافت .
در بخش دوم به بررسی سایر نکات به منظور افزایش کارآئی‌ برنامه های وب با تمرکز بر روی بانک های اطلاعاتی در زمان طراحی خواهیم پرداخت .
________________________________________
افزایش کارآئی برنامه های وب در ASP.NET 2.0 (بخش دوم)
در بخش اول به این موضوع اشاره گردید که برای طراحی و پیاده سازی یک برنامه وب کارآ از روش ها ، ترفندها و فناوری های مختلفی استفاده می گردد . بدین منظور بحث خود را با معرفی سه محور اساسی زیر آغاز و با تمرکز بر روی اولین محور ادامه دادیم .
• طراحی برای کارآئی : در این رابطه به مجموعه ای از نکات کلیدی اشاره خواهیم کرد که رعایت آنها در زمان طراحی می تواند زمینه پیاده سازی یک برنامه وب کارآ را فراهم نماید .

• تست برنامه قبل از عملیاتی شدن آن : یکی از مسائل مهم در ارتباط با برنامه های وب ، عدم تست آنها با شرایط مشابه و یا نزدیک به محیط واقعی است . در این راستا می توان از نرم افزارها و یا ابزارهای مختلفی استفاده کرد تا بتوان عملکرد و سرویس دهی یک برنامه وب را قبل از زیر بار رفتن واقعی مشاهده و بررسی نمود . شرکت مایکروسافت در این رابطه ابزارها و برنامه های متعددی را ارائه نموده است که به بررسی آنها خواهیم پرداخت .
• پیاده سازی سیستم caching : با پیاده سازی سیستم caching در سطوح متفاوت و caching داده می توان کارآئی برنامه های وب را بطرز کاملا” محسوسی افزایش داد. در این بخش به نحوه پیاده سازی سیستم caching در برنامه های وب اشاره خواهیم کرد .
در این بخش همچنان بر روی اولین محور متمرکز و به بررسی مسائل در ارتباط با بانک های اطلاعاتی و تاثیر آنها در کارآئی یک برنامه وب اشاره خواهیم کرد .

دستیابی به بانک اطلاعاتی
قوانین دستیابی به بانک های اطلاعاتی خیلی سرراست و مشخص است ولی به دلیل عدم رعایت برخی نکات توسط طراحان و پیاده کنندگان ممکن است کارآئی برنامه های وب کاهش و همزمان با افزایش کاربران امکان استفاده بهینه و مطلوب از برنامه وجود نداشته باشد .
قبل از بررسی اهم مطالب مرتبط با بکارگیری بانک های اطلاعاتی در برنامه های وب لازم است به این نکته مهم اشاره گردد که می بایست یک اتصال به بانک اطلاعاتی را صرفا” در زمانی که به وجود آن نیاز است ایجاد و در اولین فرصت ممکن آن را close کرد چراکه اولا” تعداد اتصالات به یک بانک اطلاعاتی محدود و ثانیا” مدیریت آنها کار اضافه ای را نیز به سرویس دهنده تحمیل خواهد کرد ( استفاده بهینه از یک منبع محدود ) .

با رعایت موارد زیر می توان کارآئی برنامه های وب را بهبود بخشید :
• استفاده از stored procedure : سیستم های مدیریت بانک های اطلاعاتی رابطه ای نظیر SQL server پیچیدگی های خاص خود را دارند . سیستم های فوق، قادر به انجام کارهای متنوعی هستند که با استفاده از ASP.NET نمی توان آنها را انجام داد . بکارگیری این نوع پتانسیل ها می تواند تاثیرات گسترده ای را بر روی برنامه های وب به دنبال داشته باشد . به عنوان نمونه ، استفاده از stored procedure در مقابل Query های تولید شده پویا می تواند تاثیر غیرقابل انکاری بر روی کارآیی برنامه های وب داشته باشد چراکه stored procedure را می توان برای استفاده آتی ترجمه و بهینه سازی کرد . تاثیر استفاده از stored procedure در مواردی که لازم است چندین عملیات مرتبط به هم در یک لحظه انجام شود ، بسیار مشهود و ملموس می باشد .

• استفاده از پروفایلینگ و ایندکس : تعریف ایندکس ها بگونه ای که با نوع جستجو و خواسته های مورد نیاز در یک سیستم مطابقت نماید ، می تواند نتایج مورد نظر را با سرعت قابل قبولی در اختیار کاربران قرار دهد . برای بهینه سازی بی عیب ایندکس ها در یک بانک اطلاعاتی لازم است که آنها را با استفاده از یک ابزار profiling ارزیابی کرد ( نظیر SQL Server Profiler ) . این نوع ابزارها فعالیت بانک اطلاعاتی را در یک لاگ خاص ثبت می نمایند و در ادامه می توان آن را بررسی ، آنالیز و بر اساس نتایج بدست آمده در ایندکس ها تجدید نظر نمود . ابزارهای فوق می توانند مسائلی نظیر اجرای کند query را شناسائی و حتی مجموعه ای جدید از ایندکس ها را که دارای کارآئی بمراتب بهتری می باشند ، پیشنهاد دهند . برای پروفایل بهتر بانک اطلاعاتی لازم است که یک لود فرضی را بر روی برنامه شبیه سازی کرد.

• بازیابی صرفا” اطلاعات مورد نیاز : یکی از ساده ترین روش هائی که باعث بهبود هر نوع کد بانک اطلاعاتی می گردد ، کاهش حجم اطلاعات بازیابی شده از بانک اطلاعاتی است . این کار باعث کاهش لود شبکه ، مدت زمان لازم برای باز شدن اتصال و حجم نهائی صفحه می گردد . به عنوان نمونه با استفاده از فیلترینگ مناسب در query ( نظیر استفاده از تاریخ ) و بازیابی صرفا” فیلدهای ضروری ، می توان حجم داده بازیابی شده را حتی المقدور کاهش داد .

• استفاده از connection pooling : در یک برنامه وب عمومی ، سیستم مدیریت بانک اطلاعاتی درخواست های بیشماری را از طرف سرویس گیرندگان برای صفحات وب متعدد دریافت می نماید . معمولا” این اتصالات برای مدت زمان کوتاهی فعال و ایجاد آنها یکی از مراحل وقت گیر در زمان پیاده سازی است . در صورتی که هر صفحه وب از connection string مشابه استفاده نماید ، بانک های اطلاعاتی نظیر SQL server قادر به استفاده از connection pooling تعبیه شده در خود برای استفاده مجدد از یک اتصال برای بیش از یک سرویس گیرنده متوالی می باشند . بدین ترتیب امکان استفاده از connection string به دفعات فراهم می گردد. این کار بطرز چشمگیری باعث بهبود سرعت می گردد . در چنین مواردی می توان از فایل web.config برای ذخیره connection string استفاده تا امکان بکارگیری آنها در صفحات متعدد یک برنامه وب فراهم گردد.

• استفاده از date binding : سریعترین روش بازیابی و نمایش اطلاعات از یک بانک اطلاعاتی ، استفاده از یک DataReader و یا Dataset و نسبت دهی مستقیم آن به یک کنترل داده است . رویکرد فوق ممکن است به عملیات بیشتری جهت استفاده از تمپلیت های سفارشی نیاز داشته باشد ولی این وضعیت بمراتب بهتر از حالتی است که بطور دستی بین سطرها ( رکوردها ) حرکت و آنها را در صفحه مورد نظر قرار داد.
• استفاده از caching : در صورتی که مجموعه ای خاص از داده متناوبا” درخواست و بندرت تغییر می یابد ، می توان آنها را جهت استفاده آتی cache نمود . با استفاده از سیستم caching ، در اولین مرتبه ای که یک سرویس گیرنده درخواست اطلاعات را می نماید ، اطلاعات درخواستی از بانک اطلاعاتی خوانده شده و در حافظه موقت قرار می گیرند . بدین ترتیب امکان استفاده مستقیم از اطلاعات cache شده بدون ضرورت دستیابی به بانک اطلاعاتی فراهم می گردد . در بخش های بعدی به بررسی Output caching و data caching خواهیم پرداخت .

session state
session state یکی از بزرگترین محدودیت های تاثیر گذار در خصوص کارآئی برنامه های نوشته شده با استفاده از ASP کلاسیک است . با این که در ASP.NET ویژگی های جدیدی به منظور بهبود کارکرد session state ارائه شده است ولی همچنان لازم است که از آن با دقت استفاده گردد .
اگر صرفا” ID یک خریدار کالا را در session state ذخیره کرده باشیم، درگیر مسائلی خاص نخواهیم شد . در چنین مواردی می توان یک سبد خرید کالای الکترونیکی را با ذخیره لیستی از محصولات انتخابی توسط خریدار ایجاد نمود . در صورتی که قصد ذخیره حجم بالائی از اطلاعات نظیر یک Dataset را داشته باشیم ، می بایست در این رابطه دقت و تاثیر آن را بر روی موفقیت برنامه بررسی کرد . به عنوان نمونه ، در صورتی که هر session فضائی به میزان یک مگابایت را استفاده نماید ، یکصد session همزمان باعث استفاده ۱۰۰ مگابایت از حافظه خواهد شد .

برای حل این نوع از مشکلات ، در زمان طراحی می توان بر اساس یکی از دو گزینه های زیر تصمیم گیری نمود :
• ذخیره تمامی اطلاعات مورد نیاز در یک رکورد بانک اطلاعاتی و ذخیره ID رکورد مورد نظر در یک session . روش فوق باعث صرفه جوئی در مصرف حافظه می گردد ولی سرعت برنامه را کاهش خواهد داد ( با توجه به فرآیند دستیابی به بانک اطلاعاتی که یکی از عناصر مهم و تاثیرگذار در خصوص کارآئی برنامه های وب است ) .

• به عنوان یک راه حل بهتر می توان اطلاعات مورد نظر را در یک رکورد بانک اطلاعاتی ذخیره و در ادامه برخی از اطلاعات را در حافظه cache نمود . بدین ترتیب ، امکان بازیابی اطلاعات با سرعت بیشتری فراهم می گردد . در بخش های بعدی با data caching بیشتر آشنا خواهیم شد .
بهترین روش و یا گزینه برای ذخیره session ، استفاده از روش in-process است که به صورت پیش فرض در نظر گرفته می شود . برای ذخیره session می توان از روش های دیگری نظیر یک بانک اطلاعاتی SQL نیز استفاده نمود . استفاده از روش فوق پردازش های بیشتری را به سیستم تحمیل و صرفا” در مواردی که وب سایت مورد نظر در یک web farm به همراه چندین سرویس دهنده هاست شده باشد ، توصیه می گردد .

محور دوم : تست برنامه قبل از عملیاتی شدن آن و یا پروفایلنگ ( Profiling )
برای قضاوت در خصوص تلاش های انجام شده در ارتباط با بهبود کارآئی یک برنامه وب ، می بایست قادر به سنجش کارآئی آن در عمل باشیم . در مواردی که کارآئی یک برنامه کند و ناامید کننده است ، می بایست بر اساس اطلاعات کافی اقدام به شناسائی گره ها و عوامل تاثیر گذار بر روی کارآئی برنامه های وب نمائیم تا از این رهگذر بتوانیم مشکل و یا مشکلات را برطرف و یک برنامه وب کارآ را آماده استفاده عملیاتی و نهائی نمائیم .
در بخش سوم به بررسی امکانات و ابزارهای موجود برای تست برنامه های وب خواهیم پرداخت .
________________________________________
افزایش کارآئی برنامه های وب در ASP.NET 2.0 (بخش سوم)
در بخش های اول و دوم به مجموعه ای از نکات اشاره گردید که رعایت آنها در زمان طراحی می تواند زمینه پیاده سازی یک برنامه وب کارآ را فراهم نماید . در این بخش به بررسی امکانات و ابزارهای موجود برای تست برنامه های وب خواهیم پرداخت .
یکی از مسائل مهم در ارتباط با برنامه های وب ، عدم تست آنها با شرایط مشابه و یا نزدیک به محیط واقعی است . در این راستا می توان از نرم افزارها و یا ابزارهای مختلفی استفاده کرد تا بتوان عملکرد و سرویس دهی یک برنامه وب را قبل از زیر بار رفتن واقعی مشاهده و بررسی نمود .

برای قضاوت در خصوص تلاش های انجام شده در ارتباط با بهبود کارآئی یک برنامه وب ، می بایست قادر به سنجش کارآئی آن در عمل باشیم . در مواردی که کارآئی یک برنامه کند و ناامید کننده است ، می بایست بر اساس اطلاعات کافی اقدام به شناسائی گره ها و عوامل تاثیر گذار بر روی کارآئی برنامه های وب نمائیم تا از این رهگذر بتوان مشکل و یا مشکلات را برطرف و یک برنامه وب کارآ را آماده استفاده عملیاتی و نهائی کرد .
شرکت مایکروسافت در این رابطه ابزارها و برنامه های متعددی را ارائه نموده است که در ادامه به بررسی آنها خواهیم پرداخت .

Stress Testing
پیاده کنندگان برنامه های وب می توانند از ابزارهای تست متعدد به همراه برخی امکانات ارائه شده در فریمورک دات نت برای پروفایل کردن برنامه های ASP.NET استفاده نمایند . اغلب ، گذر از مرحله تست و اعمال یک پل ارتباطی بین نتایج تست و برنامه وب کار زمان گیری است . به عنوان نمونه ممکن است در مرحله تست بتوان اطلاعات مهمی نظیر TTFB ( برگرفته شده از Average Time to first byte ) که نشان دهنده مدت زمان ارسال درخواست و دریافت اولین بایت از سرویس دهنده است و یا TTLB ( برگرفته شده از Average Time to last byte ) که نشان دهنده زمان ارسال درخواست و دریافت آخرین بایت از سرویس دهنده است را رکورد و ثبت نمود . ولی بدون استفاده از یک روش دقیق و صحیح اندازه گیری ، تشخیص پارامترهای تاثیرگذار در کاهش کارآئی یک برنامه وب کار مشکلی خواهد بود .

به عنوان مثال ، کاهش کارآئی یک برنامه وب ممکن است مربوط به سرعت پائین هارد دیسک ، تنظیمات ضعیف ASP.NET ، عدم طراحی صحیح بانک اطلاعاتی و یا عدم طراحی مناسب برنامه باشد . در واقع‌، تست کارآئی علم و دانش مختص به خود را دارد .
برای انجام اکثر تست های اولیه ، می توان از یک سرویس دهنده اختصاصی و مجموعه ای از سرویس گیرندگان استفاده نمود که از طریق یک شبکه سریع ایزوله شده با سرویس دهنده وب تعامل برقرار می نمایند . بدین منظور می توان از یک ابزار تولید load که بطور اتوماتیک مجموعه ای ‌از صفحات را از سرویس دهنده درخواست می نماید استفاده کرد تا یک لود سنگین شبیه سازی گردد . ACT ( برگرفته شده از Application Center Test ) و WAST ( برگرفته شده از Web Applications Stress Tool ) دو نمونه متداول در این زمینه می باشند .

با استفاده از ابزارهای فوق می توان شرایط حاکم بر یک برنامه وب در دنیای واقعی را شبیه سازی نمود ( تداوم درخواست صفحات از طریق چندین اتصال همزمان ) . اکثر ابزارهای تولید load ، فعالیت ها و کارهائی را که انجام می دهند ثبت می نمایند تا امکان بررسی آنها توسط طراحان و پیاده کنندگان وجود داشته باشد .
علاوه بر برنامه های فوق ، می توان نتایج را با استفاده از Windows performance counters ثبت و مشاهده کرد .

performance counter
برنامه performance counters ویندوز یکی از ابزارهای متداول موجود برای اندازه گیری کارآئی یک برنامه می باشد . با استفاده از برنامه فوق می توان به تعداد دلخواه counter را اضافه و یا مستقیما” کارآئی را از طریق جعبه محاوره ای system performance اندازه گیری کرد .
برای فعال کردن برنامه فوق می توان از مسیر Settings|Control Panel |Administrative Tools |Performance استفاده کرد. این برنامه به صورت پیش فرض صرفا” کارآئی پردازشگر اصلی سیستم و دیسک را اندازه گیری می نماید .

پس از نصب ASP.NET ، مجموعه ای counter مفید برای ردیابی و ارزیابی کارآئی برنامه های وب نیز نصب می گردد . برای اضافه کردن counter ، با کلیک (سمت راست) بر روی لیست counter و انتخاب properties ، می توان گزینه های مختلفی را پیکربندی نمود ( نظیر تغییر شکل ظاهری نمودار و نحوه ثبت اطلاعات در قالب یک گزارش ) .
یکی از مهمترین گزینه ها بخش مربوط به Data است که با استفاده از آن می توان به لیست موجود یک counter را اضافه و یا از آن حذف نمود . برای شروع ، می توان تمامی کانتر های پیش فرض را حذف و با استفاده از گزینه Add موارد دلخواه را به لیست اضافه نمود .

شکل ۱ : اضافه کردن یک counter جدید
در جعبه محاوره ای Add Counter ، چندین ویژگی مهم از جمله امکان مشخص کردن نام کامپیوتر وجود دارد . به عبارت دیگر ، شما می توانید کارآئی یک کامپیوتر راه دور را مانیتور نمائید . مانیتورینگ کارآئی سرویس دهنده وب از طریق یک سرویس گیرنده ایده آل است چراکه احتمال تاثیر عملکرد مانیتورینگ بر روی سرویس دهنده از بین خواهد رفت . ویژگی مهم بعدی ، performance object است که با استفاده از آن می توان یک گروه counter را متناسب با شی مورد نظر انتخاب نمود . گروه ASP.NET اطلاعات کاملی را در خصوص کارآئی کلی برنامه های ASP.NET ارائه می نماید . این در حالی است که گروه ASP.NET Application اطلاعاتی را در رابطه با یک برنامه وب خاص ارائه می نماید .

برخی از انواع مفید کانترها به همراه گروه ، نام counter و عملکرد هر یک از آنها در جدول ۱ نشان داده شده است .
سطرهای ستاره دار، کانترهائی را مشخص می نماید که با استفاده از آنها می توان اشکال زدائی یک مسئله را انجام داد . سایر سطرها ، کانترهائی را نشان می دهد که استفاده از آنها همواره مفید می باشد .
گروه counter عملکرد
processor % CPU Utilization درصد استفاده از CPU را نشان می دهد . در صورتی که استفاده از CPU در یک بازه زمانی صرفنظر از load سرویس گیرنده ثابت باقی بماند ، نشان دهنده انتظار یک برنامه برای استفاده از یک منبع محدود است .
ASP.NET Requests Queued تعداد درخواست های در انتظار پردازش را مشخص می نماید . از counter فوق برای مشخص کردن حداکثر load سرویس دهنده وب استفاده می گردد .

ASP.NET * Application Restarts ,
Worker Process Restarts تعداد دفعاتی که پردازه ASP.NET راه اندازی مجدد و یا reset می گردد را مشخص می نماید . این counter نشاندهنده بروز مسائل ناخواسته است.
ASP.NET Applications Requests/Sec حداکثر توان عملیاتی برنامه وب را مشخص می نماید .
ASP.NET Applications * Errors Total تعداد خطاء تولید شده توسط یک برنامه وب را مشخص می نماید . مقدار این counter در عمل می بایست صفر و یا نزدیک به صفر باشد .
ASP.NET Applications Pipeline Instance Count تعداد درخواست pipeline یک برنامه را مشخص می نماید و از آن برای مشخص شدن حداکثر درخواست همزمانی که می توان به آنها پاسخ داده شود ، استفاده می گردد .
در صورتی که مقدار این counter تحت یک load پائین باشد ، نشان دهنده استفاده مطلوب از CPU است .
System * Context Switches/sec پارامتر فوق تعداد دفعات سوئیچینگ thread context را نشان می دهد . در صورتی که مقدار این پارامتر زیاد باشد ، thread های مختلف برای استفاده از یک منبع محدود با یکدیگر رقابت می نمایند .

جدول ۱ : لیست برخی کانترهای مفید
دستیابی به کلاس های performance counters از طریق کد
با توجه به این که ASP.NET بخشی از فریمورک دات نت است ، پیاده کنندگان برنامه های وب می توانند در صفحات وب نوشته شده با استفاده از فناوری ASP.NET به تمامی کلاس های موجود در فریمورک دات نت دستیابی داشته باشند .

این بدان معنی است که از طریق یک صفحه وب ASP.NET می توان عملیات متعددی نظیر پردازش تصاویر ، نوشتن در event log و یا خواندن و انعکاس performance counters در خروجی را انجام داد . گرچه استفاده از امکاناتی از این قبیل ممکن است چالش های امنیتی مختص به خود را دارا باشد ولی با رعایت نکات ایمنی می توان پتانسیل برنامه های وب را در جهت ارائه خدمات مطلوب و بهینه به کاربران افزایش داد .

  راهنمای خرید:
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.