تبلیغات
آموزشASP.NET - افزایش كارآئی برنامه های وب در ASP.NET 2.0 ( بخش اول )
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
یكی از ملزومات كلیدی در هر نوع برنامه كامپیوتری میزان كارائی و قابلیت پاسخگوئی سریع آن به كاربران است . طراحان و  پیاده كنندگان برنامه های كامپیوتری می بایست در زمان طراحی ، پیاده سازی و نوشتن كد به این موضوع توجه جدی داشته باشند.
برنامه های وب با توجه به ماهیت و رسالت خود می بایست قادر به ارائه خدمات مورد نیاز  به صدها و یا هزاران متقاضی همزمان به سادگی و با سرعت مطلوب باشند. به عبارت دیگر ، همزمان با افزایش كاربران نمی بایست شاهد افت سرعت و كارآئی یك برنامه وب باشیم . 
با ارائه فریمورك دات نت و به دنبال آن 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 مصرف می كند آگاهی یافت . 
    در بخش دوم به بررسی سایر نكات به منظور افزایش كارآئی‌ برنامه های وب با تمركز بر روی بانك های اطلاعاتی در زمان طراحی خواهیم پرداخت .





نوع مطلب :
برچسب ها :
لینک های مرتبط :


چهارشنبه 15 شهریور 1396 05:47 ق.ظ
Hi my family member! I want to say that this article is
amazing, great written and come with approximately all important infos.
I would like to peer more posts like this
.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :