کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش کار با حافظه کشASP.NET Core 2.0

ASP.NET Core 2.0 Caching

Problem

نحوه استفاده از ذخیره سازی توزیع شده(distributed caching) و Redis در ASP.NET Core.

Solution

یک پروژه خالی ایجاد کنید ، یک Redis Services به متد ConfigureServices در فایل Startup اضافه کنید:

public void ConfigureServices(  
        IServiceCollection services)  
    {  
        services.AddDistributedRedisCache(options =>  
        {  
            options.Configuration = "..."; // Redis connection string  
        });  
    }  

یک متد utility برای set/ get اشیاء تایپ شده از حافظه پنهان ایجاد کنید.

public static class CachingExtensions  
 {  
     public static async Task SetObjectAsync(  
         this IDistributedCache cache, string key, T value)  
     {  
         await cache.SetStringAsync(key, JsonConvert.SerializeObject(value));  
     }  
  
     public static async Task GetObjectAsync(  
         this IDistributedCache cache, string key)  
     {  
         var value = await cache.GetStringAsync(key);  
         return value == null ? default(T) :  
                               JsonConvert.DeserializeObject(value);  
     }  
 }

middleware برای نوشتن در حافظه پنهان ایجاد کنید.

public class WriteCachingMiddleware  
  {  
      private readonly RequestDelegate next;  
      private readonly IDistributedCache cache;  
  
      public WriteCachingMiddleware(  
          RequestDelegate next,  
          IDistributedCache cache)  
      {  
          this.next = next;  
          this.cache = cache;  
      }  
  
      public async Task Invoke(HttpContext context)  
      {  
          await cache.SetObjectAsync("CurrentUser",  
              new UserInfo { Username = "James", Email = "james@bond.com" });  
          await this.next(context);  
      }  
  }

middleware برای خواندن از حافظه پنهان ایجاد کنید.

public class ReadCachingMiddleware  
{  
    private readonly RequestDelegate next;  
    private readonly IDistributedCache cache;  
  
    public ReadCachingMiddleware(  
        RequestDelegate next,  
        IDistributedCache cache)  
    {  
        this.next = next;  
        this.cache = cache;  
    }  
  
    public async Task Invoke(HttpContext context)  
    {  
        var user = await cache.GetObjectAsync("CurrentUser");  
        await context.Response.WriteAsync($"{user.Username}, {user.Email}");  
    }  
}

Discussion

استفاده از Caching کردن داده ها می تواند عملکرد یک برنامه وب را بهبود بخشد. برای برنامه های میزبانی شده در چند سرور، استفاده از distributed caching به این معنی است که برنامه می تواند بدون توجه به سرور نمونه دسترسی داشته باشد. Caching باید جایگزین استفاده از Session State شود.

ASP.NET Core یک abstraction over the distributed caching را فراهم می کند به طوری که بدون در نظر گرفتن جایی که حافظه ذخیره شده به طور فیزیکی ذخیره می شود (Redis، SQL)، developers هامی توانند با استفاده از API یکپارچه تعامل داشته باشند. این رابط IDistributedCache و متدهایش است که برای set، get و remove داده های حافظه پنهان را فراهم می کند. توجه داشته باشید که می توان آن را به عنوان dependency در middleware، controllers و غیره تزریق کرد.

متدهای set / get IDistributedCache با byte کار می کنند ، اما این چارچوب همچنین روش های افزوده را برای کار با مقادیر string فراهم می کند. این متدهای توسعه از Encoding.UTF8.GetBytes () و Encoding.UTF8.GetString () پشت صحنه استفاده می کنند.

شما می توانید روش های پیشرفته خود را برای کار با دیگر strongly typed objects بنویسید، همانطور که در بالا نشان داده شده است.

من توصیه می کنم با توجه به Azure Redis Cache واقعا ساده است راه اندازی و فراهم کردن بسیاری از تجزیه و تحلیل های مفید برای نظارت بر استفاده.

می توانید Source Codeرا از لینک زیر دانلود کنید:

1396/08/10 4016 2507
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...