بازیابی درست و مؤثر اطلاعات از Cache
  در این ترفند به اشتباهی اشاره خواهم کرد که معمولا هنگام بازیابی اطلاعات از Cache توسط برنامه نویسان صورت می گیرد
   ASP.NET
   ۲۸۱۴۳
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۶/۱۱/۱۴
ارسال لینک صفحه برای دوستان ارسال لینک صفحه برای دوستان  اضافه کردن به علاقه مندیها اضافه کردن به علاقه مندیها   نسخه قابل چاپ نسخه قابل چاپ

 

اگر به برنامه هاي تحت وبي که با ASP.NET نوشته شده اند دقت کنيد، متوجه خواهيد شد که در اغلب آنها، جهت بازيابي یک شي از Cache به شکل زير استفاده شده است :


if (Cache["SomeData"] != null)

{

    string name = ((SomeClass)Cache["SomeData"]).Name;

    //.....

}

اگر به قطعه کد بالا با دقت نگاه کنيد، متوجه مطلبي خواهيد شد.

اين احتمال وجود دارد که پس از اينکه توسط if، چک شد که شي Cache شده null نباشد و قبل از اينکه بازيابي اطلاعات صورت گيرد، Cache بر اثر حادثه اي خالي شود و در اين صورت هنگام بازيابي اطلاعات با خطاي NullReferenceException روبرو خواهيد شد.

هر چند که اين احتمال بسيار بسيار ناچيز است ولي در طراحي سيستم هايي با ترافيک بسيار بالا و يا داراي حساسيت هاي امنيتي، در نظر گرفتن اين احتمال مي تواند قابل توجه باشد.

قطعه کد بالا بهتر است به شکل زير نوشته شود.


SomeClass someClass = Cache["SomeData"] as SomeClass;

if (someClass != null)

{

    string name = someClass.Name;

    //.....

}

علاوه بر اينکه مشکل ذکر شده در بالا حل شد، اين روش مزيت ديگري هم دارد.

 مشاهده مي شود که در اين قطعه کد فقط يکبار بازيابي اطلاعات از Cache صورت گرفت در حالي که در قطعه کد اول اين عمل 2 مرتبه انجام شد.

موفق باشيد