راهکارهای موثر در 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 را دانلود نمایید ...
پیش نیازها :
برای اجرای این راهکار نیاز دارید تا برنامه های زیر بر روی سایت شما نصب شده باشد
:
- Microsoft Visual Studio .
- Microsoft .NET Framework version 2.0 یا بالاتر ( همراه با ویژوال استودیو نصب می
شود ) .
- یک فایل معولی متنی 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
را به سیستم اضافه نمایید . برای این منظور کارهای زیر را انجام دهید :
- در منوی Solution Explorer ، بر روی نام وب سایت کلیک راست کرده و گزینه Add
Reference را انتخاب نمایید .
- از پنجره باز شده ، لبه NET. را کلیک کرده و سپس گزینه System.Runtime.Caching را انتخاب
کرده و OK نمایید .
مرحله سوم - اضافه کردن کنترل های لازم به صفحه Asp.Net :
در مرحله بعدی از راهکار ، یک کنترل Lable و یک کنترل دکمه فرمان Button را به صفحه
اضافه نمایید . در ادامه برای رویداد کلیک کنترل دکمه فرمان ، کدی خواهیم نوشت که محتویات
فایل Cashe شده را در کنترل Lable نمایش خواهد داد .
نحوه اضافه کردن کنترل های مورد نظر به صفحه :
- صفحه مورد نظر خود را باز کرده و از منوی Toolbox و قسمت کنترل های Standard
یک دکمه فرمانButton و یک کنترل Lable را بر روی صفحه قرار دهید .
- مقدار خاصیت Text کنترل دکمه فرمان را بر روی مقدار " دریافت از ذخیره " تغییر
دهید .
ایجاد اطلاعات و ذخیره آن :
در این مرحله از راهکار شما کدهای اضافه می کنید که کارهای زیر را انجام خواهد داد:
- ایجاد یک نمونه از کلاس Cashe که بعدا بوسیله آن یک شی Cashe خواهید ساخت .
- تعیین کردن این کد شیCashe باید از یک شی HostFileChangeMonitor برای نمایش تغییرات
ایجاد شده در فایل text ، استفاده نمایید .
- خواندن اطلاعات فایل text و ذخیره آن در حافظه .
- نمایش اطلاعات فایل ذخیره شده در صفحه .
مرحله چهارم - ایجاد شی Cashe مورد نظر :
برای این منظور مراحل زیر را انجام دهید :
- برروی کنترل دکمه فرمان Button دابل کلیک نمایید تا به بخش کدنویسی رویداد کلیک
آن در فایل کد صفحه بروید .
- در بخش بالایی صفحه کد فایل ، در کد VB مرجع Imports و در کد #C مرجع using
زیر را اضافه نمایید . مطابق کدهای زیر :
نکته : برای فعال سازی قبلیت های Caching در صفحه ، این مرجع ها بایستی
در صفحه تعریف شوند .
VB کد
|
Imports System.Runtime.Caching
Imports System.IO
|
C# کد
|
using System.Runtime.Caching;
using System.IO;
|
- در رویداد کلیک دکمه فرمان Button کدهای زیر را اضافه کنید . این کد یک شی جدید
ذخیره اطلاعات به نام cashe را می سازد :
VB کد
|
Dim cache As ObjectCache = MemoryCache.Default
|
C# کد
|
ObjectCache cache = MemoryCache.Default;
|
نکته : کلاس ObjectCashe یک کلاس پایه است که متدها و خواص لازم برای
ساخت یک شی Cashe را شامل می شود .
- کد زیر را برای خواندن محتویات یک شی Cashe شده در حافظه به نام FileContents وارد
نمایید :
VB کد
|
Dim fileContents As String = TryCast( cache ( "filecontents" ) , String )
|
C# کد
|
string fileContents = cache["filecontents"] as string;
|
- سپس کد زیر را برای امتحان اینکه آیا شی FileContents وجود دارد یا خیر به صفحه اضافه
کنید :
نکته : اگر شی اشاره شده وجود نداشته باشد ، شما بایستی فایل Text
را خوانده و محتویات آن را در شی FileContents بریزید .
VB کد
|
If fileContents Is Nothing Then
End If
|
C# کد
|
if (fileContents == null)
{
}
|
- سپس در کد بخش قبل ، کد زیر را برای ایجاد یک CasheItemPolicy اضافه نمایید .
این کد قانونی را تعیین می کند تا اطلاعات ذخیره در حافظه پس از 10 ثانیه از بین بروند
.
نکته : اگر قانون یا مدت زمانی برای از بین رفتن اطلاعات ذخیره شده
در حافظه تعیین نکنید ، برنامه بر اساس مقدار پیش فرض که
InfiniteAbsoluteExpiration می باشد عمل می کند . بر این
اساس اطلاعات ذخیره شده بر اساس مدت زمان معینی از بین نرفته و تا همیشه در حافظه هستند
مگر سیستم بر اساس کمبود حافظه مجبور به پاک کردن آنها شود . بهترین روش این است که
حتما مدت زمانی را برای از بین رفتن خودکار اطلاعات تعیین نمایید .
- در ادامه کدی که در بخش قبل در قسمت شرطی 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);
|
- ظمچنین در ادامه کد مرحله قبل ، کد زیر را نیز برای اضافه کردن یک شی HostFileChangeMonitor
، به مجموعه نشان دهنده های شی ذخیره شده اضافه نمایید . شی HostFileChangeMonitor
، فایل Text را زیر نظر گرفته و هرگونه تغییر احتمالی در محتویات آن نمایش
خواهد داد . در این مثال ، اطلاعات متنی ذخیره شده در حافظه Cache ، در صورت تغییر
محتویات فایل Text ، از بین خواهد رفت .
VB کد
|
policy.ChangeMonitors.Add(New HostFileChangeMonitor(filePaths))
|
C# کد
|
fileContents = File.ReadAllText(cachedFilePath) + "\n" + DateTime.Now;
|
مرحله پنجم - نمایش اطلاعات ذخیره شده بر روی صفحه :
- در ادامه کدهای مرحله قبل ، کد زیر را نیز برای خواندن محتویات فایل Text و ریختن آن
به همراه زمان دسترسی به شی FileContent اضافه نمایید . زمان را به کد فوق اضافه کرده
ایم تا همواره بتوانند زمان قرار گرفتن اطلاعات در حافظه و یا زمان تغییر آنها را مشاهده
نمایید .
VB کد
|
fileContents = File.ReadAllText(cachedFilePath) & vbCrLf & DateTime.Now.ToString()
|
C# کد
|
fileContents = File.ReadAllText(cachedFilePath) + "\n" + DateTime.Now;
|
- کد زیر را نیز اضافه نمایید . این کد باعث می شود تا اطلاعات شی ذخیره شده را به عنوان
یک CasheItem تعیین نمایید .
با استفاده از کد زیر شما قواعد و تنظیمات لازم برای عملکرد شی ذخیره شده را بوسیله
پاس دادن یک پارامتر CacheItemPolicy به آن تنظیم می کنید .
VB کد
|
fileContents = File.ReadAllText(cachedFilePath) & vbCrLf & DateTime.Now.ToString()
|
C# کد
|
cache.Set("filecontents", fileContents, policy);
|
- در نهایت برای نمایش اطلاعات ذخیره شده در شی Cache کد زیر را اضافه نمایید .
این کد محتویات شی ذخیره شده را در کنترل Lable موجود بر روی صفحه نمایش می دهد :
VB کد
|
Label1.Text = fileContents
|
C# کد
|
Label1.Text = fileContents;
|
مرحله پایانی : تست کردن کد نوشته شده و Cashe کردن اطلاعات مورد نظر در Asp.Net :
پس از نوشتن کدهای نوشته شده ، حال در مرحله پایانی ، وقت تست و امتحان کردن برنامه
ساخته شده است .
نحوه تست کردن کد نوشته شده و ذخیره اطلاعات در حافظه :
- کنترل های Ctrl + F5 را برای اجرای پروژه یا صفحه Asp.Net فشار دهید .
- بر روی دکمه فرمان " ذخیره اطلاعات " کلیک نمایید . در این حالت اطلاعات درون
فایل Text در شی Cashe ذخیره شده و به همراه زمان ذخیره سازی در کنترل Lable موجود
بر روی صفحه نمایش داده می شود .
- بلافاصله دوباره دکمه فرمان " ذخیره اطلاعات " را کلیک نمایید . می بینید که
اطلاعات و زمان موجود در آن بدون تغییر نمایش داده می شود .
- مدت زمانی بیش از 10 ثانیه صبر کرده و مجدد بر روی دکمه فرمان کلیک نمایید .
مشاهده خواهید کرد که اطلاعات نمایش داده شده ولی این بار زمان نمایش داده شده یک زمان
جدید است . دلیل این مساله این است که قانون تعیین شده توسط خود شما ، شی Cashe ذخیره
شده را پس از 10 ثانیه از بین برده و اکنون نمونه جدیدی ساخته شده است .
- فایل Text را در ویرایشگر متن باز کرده ولی هیچ تغییری در آن ندهید .
- دوباره بر روی دکمه فرمان کلیک کرده و به زمان موجود در اطلاعات دقت نمایید .
- یک تغییر در فایل Text داده و آن را ذخیره نمایید .
- اکنون مجددا بر روی دکمه فرمان کلیک کنید .
- این بار ، زمان موجود در کنترل Lable بلافاصله تغییر می کند . این نشان می دهد که نمایشگر
HostFileChangeMonitor تایید کرده که اطلاعات موجود در فایل تغییری داشته است
.
دانلود فایل عملی پروژه و نسخه PDF راهکار
راجع این مطلب
سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...
>>>>> ورود به انجمن تخصصی
نطر خودتان درباره این صفحه را با ما در میان گذاشته و در صورت تمایل از Developer1
حمایت نمایید :