Подтвердить что ты не робот

Примеры кэширования AppFabric с использованием С#

В настоящее время я изучаю интеграцию кэширования AppFabirc в моем приложении .net С# и ищу некоторые примеры кода. Есть ли какие-либо примеры с открытым исходным кодом или кодом, доступные из кэширования AppFabric, которые я могу посмотреть?

4b9b3361

Ответ 1

Операции с кешем
Первым объектом, созданным при работе с кэшированием AppFabric, является DataCacheFactory. Это может быть создано либо с жестко закодированными данными конфигурации, которые сообщают factory, как связаться с кеш-сервером, либо без конфигурации, и в этом случае он считывает конфигурацию из вашего файла web.config/app.config. Моя рекомендация заключается в том, что вы сохраняете свою конфигурационную информацию в вашем файле .config, иначе, когда вы хотите что-то изменить в настройке вашего кеша, вам нужно будет перекомпилировать и повторно распространить ваше приложение. Важно помнить о DataCacheFactory, это очень сложно создать - вы определенно не хотите создавать одну из них для каждой операции кеша. Рассмотрите возможность использования шаблона Singleton - см. этот вопрос для более подробной информации.

// Create a factory reading the config info from the .config file
DataCacheFactory factory = new DataCacheFactory();

Основной интерфейс к кешу - через объект Cache. Кэш получен из метода DataCacheFactory GetCache, передавая имя кеша:

DataCache myCache = factory.GetCache("myCache");

Добавление элемента в кэш
Каждый элемент в кеше имеет ключ, который является строкой. Ключ должен быть уникальным для кеша - если вы передаете ключ, который уже существует, вы получите исключение. Элемент, который должен быть кэширован, должен быть последовательным, поэтому AppFabric может внутренне передавать его вокруг серверов в кеше. На самом базовом уровне элементы добавляются в кеш с помощью метода Add.

object myCachedItem = new Object();
string myCachedItemKey = "MyCacheKey";
myCache.Add(myCachedItemKey, myCachedItem);

Удаление элемента из кэша

myCache.Remove(myCachedItemKey);

Просто.

Получение элемента из кэша
При получении элемента из кеша мы используем шаблон кэширования. Это означает, что мы смотрим в кеш, чтобы увидеть, есть ли нужный элемент (с помощью ключа). Если элемент находится в кеше, мы берем кешированный элемент (потенциально литой его на другой тип); в противном случае мы предпринимаем шаги для получения элемента с нуля, например. чтение из базы данных, а затем кеширование, чтобы оно было для нас в следующий раз.

object cachedObject;
string myImportantDataKey = "MyImportantDataTable";
DataTable myImportantData;

// This is an object because everything is returned from the cache as an object
cachedObject = myCache.Get(myImportantDataKey);
// Check to see if we got something from the cache
if (cachedObject == null)
{
    // The requested item wasn't in the cache - a cache miss
    // Go get the data from the db
    myImportantData = getMyImportantDataFromMyDatabase();

    // Add the item to the cache so we've got it for next time
    myCache.Add(myImportantDataKey, myImportantData);
}
else
{
    // We have the cached object so cast it to a DataTable
    myImportantData = (DataTable)cachedObject;
}

Обновление элемента в кэше

// Put can be used to update an existing item in the cache
// If the item does not exist then it functions like Add
myCache.Put(myImportantDataKey, myUpdatedImportantData);

Это основные операции с CRUD, но есть еще много возможностей для работы с concurrency!


Здесь можно загрузить учебный комплект для Windows Server AppFabric , в нем есть раздел, посвященный кэширование. Продолжайте следить за тегом appfabric здесь, так как я уверен, что со временем будет еще много примеров кода, решающих проблемы для людей.

Ответ 2

Также стоит добавить, что шаблон Singleton очень важен, если вы используете сервис кэширования Azure AppFabric, поскольку каждое создание DataCacheFactory создает новое соединение с сервисом кеширования Azure AppFabric. Поскольку количество подключений ограничено в зависимости от размера вашего кеша (кеш объемом 128 МБ включает в себя 5 подключений), вы очень быстро блокируете все свои соединения, если вы не будете повторно использовать один и тот же factory!