امروز: چهارشنبه، 9 آبان 1403
06/24 1399
سیستم کش نرم افزار OneShot وظیفه خواندن و ذخیره اطلاعات دریافتی در فایل ها را دارد.

بخش های سیستم کش :

1- اینترفیس IFileCacheConfig : در حال حاضر شامل یک متد به نام Config می باشد که کلاس FileCacheConfigBuilder به عنوان ورودی میگیرد.

2- کلاس FileCacheConfigBuilder :  در حال حاضر شامل یک متد جنریک به نام RegisterCache می باشد که فایل هایی که نیاز به کش شدن را دارند توسط این متدبه سیستم مدیریت کش (FileCacheConfigHandler) رجیستر می شوند.

3- کلاس FileCacheConfigHandler : وظیفه افزودن وابستگی و یا وابستگی ها یک فایل کش را به عهده دارد.

4- کلاس FileCache :  وظایف کلاس FileCache 
   1- بارگزاری اولیه در زمان بالا آمدن برنامه که شامل خواندن تمامی فایل های کش شده به اضافه وابستگی های آنها می باشد.
   2- چک کردن اینکه کلاس مورد نظر نیازی به کش شدن دارد یا خیر.
   3- پاک کردن فایل کش از لیت فایل های کش شده.
   4- حذف وابستگی های یک فایل کش شده.
   5- حذف کردن تمام فایل های کش شده.
   6- ذخیره اطلاعات به صورت سریالایز را در فایل و یا خواندن فایل و دسریالایز کردن آن برای استفاده در برنامه.

طریقه استفاده از سیستم کش :
     1- استفاده از 
FileCache.Init();

    در آغاز برنامه جهت بارگزاری اولیه کش می باشد.

    2- جهت معرفی سیستم مورد نظر به کش برنامه ، ابتدا باید کلاسی ترجیحا با CacheConfig اتمام می یابد را ایجاد کرد و سپس از اینترفیس IFileCacheConfig ارث بری کرده و متد Config را پیاده سازی نمود.در متد کانفیگ از طریق ورودی آن که کلاس FileCacheConfigBuilder بوده و به صورت زنجیره وار می باشد به این صورت که ابتدا کلاس ایجاد شده را با متد RegisterCache به سیستم کش معرفی و رجیستر میکنیم ، در صورتی که کلاس مورد نظر وابستگی به کلاس دیگری داشت باید از طریق AddDependencies تایپ کلاس های مورد نظر را به کلاس جاری اضافه کرد.مانند مثال زیر : 

    public class BridgeCacheConfig : IFileCacheConfig
    {
        public static Type FileCacheType = typeof(BridgeCacheConfig);

        public void Config(FileCacheConfigBuilder builder)
        {
            builder.RegisterCache<BridgeCacheConfig>().AddDependencies(HookEventsCacheConfig.FileCacheType);
        }
    }


   3- استفاده از متد جنریک GetAndSet جهت ذخیره و خواندن فایل کش به صورت زیر :
FileCache.GetAndSet<TCache, TResult>(Func<TResult> func, uint counter = 0)

 * TCache : نام کلاسی که از اینترفیس IFileCacheConfig ارث بری کرده است.
* TResult : خروجی براساس نیاز کلاس مورد نظر.
*counter : زمانی مورد استفاده قرار میگیرد که بخواهیم از یک کلاس چندین نمونه فایل کش با یک اسم ثابت داشته باشیم.در اینصورت به تعداد کلاس های مورد نیاز شمارنده را میدهیم.مقدار پیش فرض 0 می باشد.به عنوان مثال اگر از یک کلاس 4 نمونه کش بخواهیم به صورت زیر انجام میگیرد.ClassCache-3,ClassCache-2,ClassCache-1,ClassCache-0

   4- استفاده از متد Remove ، جهت پاک کردن فایل کش شده از سیستم.

   5- استفاده از متد RemoveAll، جهت پاک کردن کلیه فایلهای کش شده از سیستم.

   6- استفاده از متد RemoveDependencies ، جهت پاک کردن وابستگی های فایل کش شده از سیستم.