تبلیغات
آموزشASP.NET - افزایش كارآئی برنامه های وب در ASP.NET 2.0 (بخش دوم)
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 
در بخش اول به این موضوع اشاره گردید كه برای طراحی و پیاده سازی یك برنامه وب كارآ  از روش ها ، ترفندها و فناوری های مختلفی استفاده می گردد . بدین منظور بحث خود را با معرفی سه محور اساسی زیر آغاز و با تمركز بر روی اولین محور ادامه دادیم .
  • طراحی برای كارآئی  : در این رابطه به مجموعه ای از نكات كلیدی اشاره خواهیم كرد كه رعایت آنها در زمان طراحی می تواند زمینه پیاده سازی یك برنامه وب كارآ را فراهم نماید .

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

  • پیاده سازی سیستم 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 همزمان باعث استفاده 100 مگابایت از حافظه خواهد شد .
برای حل این نوع از مشكلات ، در زمان طراحی می توان بر اساس یكی از دو گزینه های زیر تصمیم گیری نمود :

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

  • به عنوان یك راه حل بهتر می توان اطلاعات مورد نظر را در یك ركورد بانك اطلاعاتی ذخیره و در ادامه برخی از اطلاعات را در حافظه cache نمود . بدین ترتیب ، امكان بازیابی اطلاعات با سرعت بیشتری فراهم می گردد . در بخش های بعدی با data caching بیشتر آشنا خواهیم شد .

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

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





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


پنجشنبه 23 شهریور 1396 04:33 ب.ظ
Write more, thats all I have to say. Literally, it seems as though you relied on the video to make your point.
You definitely know what youre talking about, why waste your
intelligence on just posting videos to your blog when you could be giving us something informative to read?
چهارشنبه 15 شهریور 1396 02:37 ب.ظ
Hi, everything is going fine here and ofcourse every one is sharing information, that's really fine, keep up
writing.
چهارشنبه 1 شهریور 1396 11:13 ق.ظ
Hello everyone, it's my first go to see at this site, and paragraph
is in fact fruitful designed for me, keep up posting such posts.
 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

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

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








جستجو

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