راهکارهای موثر در ASP.Net > راهکار 7 - 1 : ذخیره اطلاعات برنامه در حافظه در ASP.Net

مقدمه :

  Caching به معنای ذخیره کردن اطلاعات برنامه در حافظه ، این امکان را به شما می دهد تا اطلاعات را برای دسترسی مداوم در حافظه موقت سیستم ( Cache ) قرار دهید .
برنامه و صفحه می توانند به جای دریافت مجدد اطلاعات درخواست شده از منبع اصلی آن ، آن اطلاعات را سریع تر و راحت تر از حافظه Cache دریافت کنند . این امکان باعث جلوگیری از درخواست تکراری برای دریافت اطلاعات به سرور ، کاهش درخواست ها از سرور و پایداری و بهبود عملکرد برنامه می شود .همچنین می توانید اطلاعات ذخیره شده در حافظه را حتی در زمانی که منبع داده ای آن در دسترس نباشد ، خوانده و استفاده نمایید .

ساختار کاری NET. کلاس هایی را فراهم کرده که شما را قادر می سازد تا اطلاعات برنامه را در حافظه قرار دهید . این کلاس ها در Namespace یی با نام System.Runtime.Caching تعیین شده اند . این Namespace در NET. 4 به تازگی اضافه شده است ، ولی امکان Caching را در نسخه های قبلی نیز فراهم می کند .
این راهکار ، شما را با قابلیت ها و امکانات Caching ( ذخیره سازی اطلاعات ) در حافظه در ساختار کاری NET. آشنا می سازد . در این راهکار ما اطلاعات یک فایل Text را در حافظه ذخیره نموده و سپس از آن استفاده می کنیم . وظایف و کارهای تشریح شده در این راهکار عبارتند از :

  • ایجاد یک وب سایت ASP.Net . ( فرض بر این است که کاربر با این کار آشناست . برای دریافت اطلاعات بیشتر به راهکار شماره 1-1 : ساخت یک سایت ASP.Net در ویژوال استودیو بروید ).
  • اضافه کردن یک مرجع برای فعال سازی قابلیت Caching در صفحه .
  • تنظیم کد لازم برای Cache یا ذخیره کردن اطلاعات .
  • نمایش مکان و نام فایل ذخیره شده به همراه نمایش آیتم های تغییر کرده .

برای حمایت از این پروژه ، کتاب راهکارهای موثر در ASP.Net را دانلود نمایید ...

پیش نیازها :

برای اجرای این راهکار نیاز دارید تا برنامه های زیر بر روی سایت شما نصب شده باشد :

  1. Microsoft Visual Studio .
  2. Microsoft .NET Framework version 2.0 یا بالاتر ( همراه با ویژوال استودیو نصب می شود ) .
  3. یک فایل معولی متنی Text که حاوی مقداری اطلاعات بوده و در راهکار استفاده می شود .

مرحله اول - طراحی یک سایت ASP.Net :

در مرحله اول از راهکار بایستی یک سایت ASP.Net را برای اجرای پروژه خود ایجاد نمایید . فرض بر این است که سایت را قبلا ایجاد کرده و یا با نحوه اجرای آن آشنایی دارید ، در غیر اینصورت به راهکار شماره 1-1 : نحوه ایجاد یک وب سایت ASP.Net در ویژوال استودیو بروید .

مرحله دوم - اضافه کردن فایل های مورد نیاز :

اضافه کردن فایل Text :

برای شروع راهکار ابتدا یک فایل text که می خواهیم محتویات آن را ذخیره (Cashe) نماییم ، به پروژه اضافه کنید . برای این منظور در منوی Solution Explorer، بر روی پروژه یا وب سایت کلیک سمت راست کرده وسپس گزینه Add Exiting Item را انتخاب نمایید . فایل Text ای که قبلا ایجاد کرده ایم را از طریق منوی   Add Exiting Item پیدا کرده و به پروژه اضافه می کنیم .

اضافه کردن مرجع برای فعال سازی قابلیت Cashing صفحه :

برای فعال سازی قابلیت ذخیره سازی اطلاعات در صفحه ، بایستی NameSpace با عنوان System.Runtime.Caching را به سیستم اضافه نمایید . برای این منظور کارهای زیر را انجام دهید :

  1.  در منوی Solution Explorer ، بر روی نام وب سایت کلیک راست کرده و گزینه Add Reference را انتخاب نمایید .
  2. از پنجره باز شده ، لبه NET. را کلیک کرده و سپس گزینه System.Runtime.Caching را انتخاب کرده و  OK نمایید .

مرحله سوم - اضافه کردن کنترل های لازم به صفحه Asp.Net :

در مرحله بعدی از راهکار ، یک کنترل Lable و یک کنترل دکمه فرمان Button را به صفحه اضافه نمایید . در ادامه برای رویداد کلیک کنترل دکمه فرمان ، کدی خواهیم نوشت که محتویات فایل Cashe شده را در کنترل Lable نمایش خواهد داد .

نحوه اضافه کردن کنترل های مورد نظر به صفحه :

  1.  صفحه مورد نظر خود را باز کرده و از منوی Toolbox و قسمت کنترل های Standard یک دکمه فرمانButton  و یک کنترل Lable را بر روی صفحه قرار دهید .
  2.  مقدار خاصیت Text کنترل دکمه فرمان را بر روی مقدار " دریافت از ذخیره " تغییر دهید .

ایجاد اطلاعات و ذخیره آن :

در این مرحله از راهکار شما کدهای اضافه می کنید که کارهای زیر را انجام خواهد داد:

  1. ایجاد یک نمونه از کلاس Cashe که بعدا بوسیله آن یک شی Cashe خواهید ساخت .
  2. تعیین کردن این کد شیCashe  باید از یک شی HostFileChangeMonitor برای نمایش تغییرات ایجاد شده در فایل text ، استفاده نمایید .
  3. خواندن اطلاعات فایل text و ذخیره آن در حافظه .
  4. نمایش اطلاعات فایل ذخیره شده در صفحه .

مرحله چهارم - ایجاد شی Cashe مورد نظر :

برای این منظور مراحل زیر را انجام دهید :

  1.  برروی کنترل دکمه فرمان Button دابل کلیک نمایید تا به بخش کدنویسی رویداد کلیک آن در فایل کد صفحه بروید .
  2.  در بخش بالایی صفحه کد فایل ، در کد VB مرجع Imports  و در کد #C مرجع using زیر را اضافه نمایید . مطابق کدهای زیر :
    نکته : برای فعال سازی قبلیت های Caching در صفحه ، این مرجع ها بایستی در صفحه تعریف شوند .
    VB کد Imports System.Runtime.Caching
    Imports System.IO

    C# کد using System.Runtime.Caching;
    using System.IO;
  3.  در رویداد کلیک دکمه فرمان Button کدهای زیر را اضافه کنید . این کد یک شی جدید ذخیره اطلاعات به نام cashe را می سازد :
    VB کد Dim cache As ObjectCache = MemoryCache.Default

    C# کد ObjectCache cache = MemoryCache.Default;

    نکته : کلاس ObjectCashe یک کلاس پایه است که متدها و خواص لازم برای ساخت یک شی Cashe را شامل می شود .
  4. کد زیر را برای خواندن محتویات یک شی Cashe شده در حافظه به نام FileContents وارد نمایید :
    VB کد Dim fileContents As String = TryCast( cache ( "filecontents" ) , String )

    C# کد string fileContents = cache["filecontents"] as string;
  5. سپس کد زیر را برای امتحان اینکه آیا شی FileContents وجود دارد یا خیر به صفحه اضافه کنید :
    نکته : اگر شی اشاره شده وجود نداشته باشد ، شما بایستی فایل Text را خوانده و محتویات آن را در شی FileContents بریزید .
    VB کد If fileContents Is Nothing Then

    End If

    C# کد if (fileContents == null)
    {
    }
  6.  سپس در کد بخش قبل ، کد زیر را برای ایجاد یک CasheItemPolicy اضافه نمایید . این کد قانونی را تعیین می کند تا اطلاعات ذخیره در حافظه پس از 10 ثانیه از بین بروند .
    نکته : اگر قانون یا مدت زمانی برای از بین رفتن اطلاعات ذخیره شده در حافظه تعیین نکنید ، برنامه بر اساس مقدار پیش فرض که InfiniteAbsoluteExpiration می باشد عمل می کند . بر این اساس اطلاعات ذخیره شده بر اساس مدت زمان معینی از بین نرفته و تا همیشه در حافظه هستند مگر سیستم بر اساس کمبود حافظه مجبور به پاک کردن آنها شود . بهترین روش این است که حتما مدت زمانی را برای از بین رفتن خودکار اطلاعات تعیین نمایید .
  7. در ادامه کدی که در بخش قبل در قسمت شرطی if/then وارد نمودید ، کد زیر را برای تعیین مجموعه فایل هایی که می خواهید اطلاعات آنها را ذخیره نمایید ، بنویسید . در این بخش آدرس فایل Text را وارد می کنیم . همچنین اطلاعات پس از 10 ثانیه از بین می روند :
    VB کد Dim policy As New CacheItemPolicy( )
    policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0)

    C# کد CacheItemPolicy policy = new CacheItemPolicy( );
    policy.AbsoluteExpiration = DateTimeOffset.Now.AddSeconds(10.0);
  8. ظمچنین در ادامه کد مرحله قبل ، کد زیر را نیز برای اضافه کردن یک شی HostFileChangeMonitor ، به مجموعه نشان دهنده های شی ذخیره شده اضافه نمایید . شی HostFileChangeMonitor ، فایل Text را زیر نظر گرفته  و هرگونه تغییر احتمالی در محتویات آن  نمایش خواهد داد . در این مثال ، اطلاعات متنی ذخیره شده در حافظه Cache ، در صورت تغییر محتویات فایل Text ، از بین خواهد رفت .
    VB کد policy.ChangeMonitors.Add(New HostFileChangeMonitor(filePaths))

    C# کد fileContents = File.ReadAllText(cachedFilePath) + "\n" + DateTime.Now;

مرحله پنجم - نمایش اطلاعات ذخیره شده بر روی صفحه :

  1. در ادامه کدهای مرحله قبل ، کد زیر را نیز برای خواندن محتویات فایل Text و ریختن آن به همراه زمان دسترسی به شی FileContent اضافه نمایید . زمان را به کد فوق اضافه کرده ایم تا همواره بتوانند زمان قرار گرفتن اطلاعات در حافظه و یا زمان تغییر آنها را مشاهده نمایید .
    VB کد fileContents = File.ReadAllText(cachedFilePath) & vbCrLf & DateTime.Now.ToString()

    C# کد fileContents = File.ReadAllText(cachedFilePath) + "\n" + DateTime.Now;
  2. کد زیر را نیز اضافه نمایید . این کد باعث می شود تا اطلاعات شی ذخیره شده را به عنوان یک CasheItem تعیین نمایید .
    با استفاده از کد زیر شما قواعد و تنظیمات لازم برای عملکرد شی ذخیره شده را بوسیله پاس دادن یک پارامتر CacheItemPolicy به آن تنظیم می کنید .
    VB کد fileContents = File.ReadAllText(cachedFilePath) & vbCrLf & DateTime.Now.ToString()

    C# کد cache.Set("filecontents", fileContents, policy);
  3. در نهایت برای نمایش اطلاعات ذخیره شده در شی Cache  کد زیر را اضافه نمایید . این کد محتویات شی ذخیره شده را در کنترل Lable موجود بر روی صفحه نمایش می دهد :
    VB کد Label1.Text = fileContents

    C# کد Label1.Text = fileContents;

مرحله پایانی : تست کردن کد نوشته شده و Cashe کردن اطلاعات مورد نظر در Asp.Net :

پس از نوشتن کدهای نوشته شده ، حال در مرحله پایانی ، وقت تست و امتحان کردن برنامه ساخته شده است .
نحوه تست کردن کد نوشته شده و ذخیره اطلاعات در حافظه :

  1.  کنترل های Ctrl + F5 را برای اجرای پروژه یا صفحه Asp.Net فشار دهید .
  2.  بر روی دکمه فرمان " ذخیره اطلاعات " کلیک نمایید . در این حالت اطلاعات درون فایل Text در شی Cashe ذخیره شده و به همراه زمان ذخیره سازی در کنترل Lable موجود بر روی صفحه نمایش داده می شود .
  3.  بلافاصله دوباره دکمه فرمان " ذخیره اطلاعات " را کلیک نمایید . می بینید که اطلاعات و زمان موجود در آن بدون تغییر نمایش داده می شود .
  4.  مدت زمانی بیش از 10 ثانیه صبر کرده و مجدد بر روی دکمه فرمان کلیک نمایید . مشاهده خواهید کرد که اطلاعات نمایش داده شده ولی این بار زمان نمایش داده شده یک زمان جدید است . دلیل این مساله این است که قانون تعیین شده توسط خود شما ، شی Cashe ذخیره شده را پس از 10 ثانیه از بین برده و اکنون نمونه جدیدی ساخته شده است .
  5.  فایل Text را در ویرایشگر متن باز کرده ولی هیچ تغییری در آن ندهید .
  6.  دوباره بر روی دکمه فرمان کلیک کرده و به زمان موجود در اطلاعات دقت نمایید .
  7.  یک تغییر در فایل Text داده و آن را ذخیره نمایید .
  8.  اکنون مجددا بر روی دکمه فرمان کلیک کنید .
  9. این بار ، زمان موجود در کنترل Lable بلافاصله تغییر می کند . این نشان می دهد که نمایشگر  HostFileChangeMonitor  تایید کرده که اطلاعات موجود در فایل تغییری داشته است .

دانلود فایل عملی پروژه و نسخه PDF راهکار



راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1 حمایت نمایید :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :                 
آدرس Email :    
 
نظر شما :  
 
سوال امنیتی : پایتخت ایران ؟      
حمایت از سایت Developer1