• بررسی پیاده سازی In Memory Caching در ASP.NET MVC 6
بررسی پیاده سازی In Memory Caching در ASP.NET MVC 6
1395/02/22 - 10:46:01 // MVC 5 & 6 // 1 نظر // 5188 بازدید

اجازه دهید در ابتدا خیلی کوتاه به بررسی Caching در وب بپردازیم. Caching به معنای ذخیره سازی یکسری داده های پر بازدید در حافظه WebServer است و هدف از آن کاستن از مراجعات زیاد به DataBase و دیگر منابع سرور میباشد .

بسمه تعالی

بررسی پیاده سازی In Memory Caching در ASP.NET MVC 6

اجازه دهید در ابتدا خیلی کوتاه به بررسی Caching در وب بپردازیم. Caching به معنای ذخیره سازی یکسری داده های پر بازدید در حافظه WebServer است و هدف از آن کاستن از مراجعات زیاد به DataBase و دیگر منابع سرور میباشد .

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

در این مقاله فرض ما بر داشتن یک Single WebServer و نیاز به ایجاد Cache بر روی همین تک سرور میباشد .

مطابق معمول ، در ابتدا دروت VS.NET یک پروژه وب جدید به ایجاد و نام آنرا InMemoryCaching قرار دهید.

نوع پروژه را هم ترجیحا ، Empty Project انتخاب کنید .

پروژه را بسازید مراحل را مطابق زیر ادامه دهید .

اولین کار تامین dependencies در پروژه میباشد . پس باید به سراغ Project.Json برویم.

قاعدتا به یک دیتایی نیاز داریم تا آنرا Cache کنیم ، پس باید حداقل یک Model ساده و مقداری دیتای فرضی داشته باشیم. در Model یک کلاس جدید به نام Employee برای Schema و یک EmployeesDatabase برای داشتن دیتای فرضی ایجاد کنید . مطابق زیر عمل کنید .

حال یک فولدر به نام Services ایجاد و از طریق یک متد ساده Get دیتا را به Controller ارسال میکنیم.

بر اساس آنچه در مقالات Core 1 هم داشتیم ، سرویس باید در Startup.cs به کل پروژه معرفی شود ، لذا به تنظیمات درون Startup.cs را مطابق زیر قرار دهید .

به قسمت ابتدایی Employee Controller دقت کنید .

متد سازنده درون Controller 2 مقدار _Service و _MemoryCache را مقدار دهی و متد SetGetMemoryCache که بدنه آنرا خواهیم دید ، تایین خواهیم کرد که دیتا از طریق Cache تامین شود یا به شکل معمول و استفاده از صدا زدن سرویس .

همانطور که مشاهده میکنید ، یک Key تعریف شده که با کنترل آن در هر مراجعه میتوان تایین نمود که آیا Cache و بالطبع دیتای درون آن موجود هست یا نه . اگر Cache موجود نباشد، دیتا ازسرویس دریافت و یک Cache یک دقیقه ای با همان کلید که در تصویر مشهود است ایجاد و عبارت Data is added in cache هم درون status که مقدار یک Viewbag است قرار میگیرد . در غیر این صورت ، دیتا از Cache دریافت و به List از Employee باید Cast گردد . پیام لازمه مبنی از دریافت دیتا از Cache به Status ارسال شده و سپس Employees به عنوان یک Object حاوی داده Return می شود.

حالا وقت رسیدگی به View است . بدنه ViewImport را اینگونه قرار دهید .

و حالا وقت ایجاد Index View در Employee است .

برای View فرقی ندارد دیتا از کجا بیاید . فقط مهم است که یک Strongly Typed Model به آن معرفی شود که در اینجا Employee وجود دارد . لیست داده ها تویط یک Foreach در حال نمایش است و یک Input هم نقش نمایش Status را که مقدار درون ViewBag است را بر عهده دارد.

یکبار پروژه را اجرا کنید و مطابق تصویر زیر خواهید دید که داده ها درون Cache قرار خواهند گرفت . چند ثانیه بعد یکبار صفحه را Refresh کنید و خواهید دید که داده ها از Cache خواهند آمد .

پس از Refresh

حال مثلن اگر در وب سایت یا Application شما بخشی مانند Menu و ... مثلن هر چند ماه یکبار تغییر میکند و نیازی نیست با هر Request کاربر DataBase و .. را درگیر کنید ، میتوانید با این روش از Cache استفاده کنید . دقت کنید همین اشغال کردن Ram در سرور و Cache کردن Data هم ظرافتهای خود را دارد و سعی کنید به صورت حساب شده از آن استفاده نمایید .

دانلود سورس پروژه

علی کلاهدوزان
معرفی نویسنده : علی کلاهدوزان

سلام بر دوستان ،
شاید رایج است به عنوان پروفایل کاربر ، چند خطی راجع به خودم بنویسم ، ولی وضعیت کاری و سوابق من با یک جستجوی ساده در گوگل مشخص خواهد شد ، لذا سرتان را با مطالب بی مورد به درد نیاورم بهتر است . اگر نکته خاصی لازم بود بدانید در قسمت "ایلیا سافت در یک نگاه" به احتمال زیاد یافت خواهد شد . جزئیات بیشتر را سوال کنید ، آدرس ایمیل Ali@Kolahdoozan.com همیشه جوابگوی شماست .امیدوارم از مطالب سایت استفاده کرده باشید . شاد و پیروز باشید .

امتیاز به مطلب
           
نظرات کاربران
  • پیام
    1395/10/05 - 13:26:13

    0
    0
    سلام استاد الان که تو dependency نسخه 1.1.0 اومده گزنیه service.AddCaching() موجود نیست تو نت هم جستجو کردم گفتن که باید از Microsoft.AspNet.Hosting": "1.0.0-rc1-final" استفاده کرد. وقتی هم که از اون استفاده می کنیم هنگام run کردن پروژه پیغام میده که نمی تونه اسمبلی های AddCaching رو لود کن. چکار باید کنیم استاد؟
     
     --
    باید با نسخه جدید هماهنگ بشید . به دلیل آپدیت پشت هم دیگر نمیتونم ریز به ریز هماهنگ کنم .  
ارسال نظر