I have an application on windows azure which has both a worker and a webrole. I needed a way to send basic throw away info to the webrole from the worker role, so I decided to use windows azure cache. I created this very simple class which allows you to initialize a connection to the cache and use it for basic adding and reading of data.
Before using this class you need to AppFabric SDK from here. After installing the SDK Add a reference to the caching api by browsing and selecting the following file:
[SDK Install Path]\V1.5\Assemblies\NET4.0\Cache\Microsoft.ApplicationServer.Caching.Client.dll
Setup your azure cache instance then insert your access key and azure cache url in the code below.
Here is the code:
using System; using System.Collections.Generic; using Microsoft.ApplicationServer.Caching; using System.Security; namespace Yoursite.Azure.Wrappers { public static class CacheStore { private static DataCache _cache; static CacheStore() { // Declare array for cache host. DataCacheServerEndpoint[] servers = new DataCacheServerEndpoint[1]; servers[0] = new DataCacheServerEndpoint("[YOUR-NAME-SPACE].cache.windows.net", 22243); // Setup DataCacheSecurity configuration. string strACSKey = "[INSERT KEY HERE]"; var secureACSKey = new SecureString(); foreach (char a in strACSKey) { secureACSKey.AppendChar(a); } secureACSKey.MakeReadOnly(); DataCacheSecurity factorySecurity = new DataCacheSecurity(secureACSKey,true); // Setup the DataCacheFactory configuration. DataCacheFactoryConfiguration factoryConfig = new DataCacheFactoryConfiguration(); factoryConfig.Servers = servers; factoryConfig.SecurityProperties = factorySecurity; // Create a configured DataCacheFactory object. DataCacheFactory cacheFactory = new DataCacheFactory(factoryConfig); // Get a cache client for the default cache. _cache = cacheFactory.GetDefaultCache(); } public static void SetValue(string key,object value) { _cache[key] = value; } public static T GetValue<T>(string key) { return (T)_cache[key]; } } }
Usage:
var saveme = 856; //Store value CacheStore.SaveValue("savemekey",saveme); //Retrieve value var readme = CacheStore.GetValue<int>("savemekey");
Enjoy! Don’t forget to catch exceptions. My error logs show exceptions while attempting to communicate with the azure caching server every now and then.