Вот хороший и простой класс/сервис помощника кэша, который я использую:
using System.Runtime.Caching;
public class InMemoryCache: ICacheService
{
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
T item = MemoryCache.Default.Get(cacheKey) as T;
if (item == null)
{
item = getItemCallback();
MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(10));
}
return item;
}
}
interface ICacheService
{
T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class;
}
cacheProvider.GetOrSet("cache key", (delegate method if cache is empty));
поставщик Кэша проверит, существует ли что-нибудь под названием "идентификатор кэша" в кэше, и если нет, это назовет метод делегата выбрать данные и сохранить его в кэше.
var products=cacheService.GetOrSet("catalog.products", ()=>productRepository.GetAll())
Вы можете использовать DpapiProtectedConfigurationProvider
См. Эти ссылки.
Шифрование файлов конфигурации .NET с помощью кода
Реализация защищенной конфигурации с помощью приложений Windows
Шифрование паролей в Файл app.config .NET
Пока.