Role Based Caching
Windows Azure provides 2 primary role based caching options. Shared caching and Dedicated caching.
Shared Caching is defining a portion of the memory of the web or worker role. This does not include additional charges since you’re already paying for the cloud service instance and using the portion of the memory. This might be a performance hit when the cache size is significantly bigger portion of the total instance memory allocation. Shared caching is also known as In-Role caching and Co-Located caching. The name In-Role caching is self explanatory.
Dedicated caching is again a very self explanatory term, this enables us to have a dedicated Cache Worker Role.
In-Role Caching
This is the cache type we provision inside our role instance. Create a Windows Azure cloud service project and 2 roles. (one Web role and one Cache Worker role).
Right click on the WebRole1 and go to properties.
Tick Enable Caching, also notice that Dedicated Role option is disabled since this is a Web Role. You can specify the amount of cache size in percentage. You can notice that it says Cache Cluster settings. This is because Azure roles can run on more than one instance when the role runs on more than one instance this forms the cache cluster. A cache cluster is a distributed caching service that combines all the memory from all the running instances.
Each cache cluster maintains the runtime state in the Azure storage. You should provide a valid storage account information in the text box when deploying the solution to Windows Azure.
Named Cache Settings is the last section. Each cache cluster can have more than one Named Cache. This is a logical partition of the cache memory with different settings. You can see the different settings we can configure for each named cache. Eviction policy LRU means Last Recently Used.
Dedicated Caching
The below screen explains the dedicated caching. You can see that Dedicated Role is enabled and also you have the option of using the dedicated role as a co-located cache by specifying the amount of memory in the percentage. This is useful when you plan a strict resource framed deployment.
Windows Azure Caching Service
Other then the above role based cache service Windows Azure provides a Cache Service which is in preview.
The cache offering is available in 3 different packages. Basic, Standard and Premium. The good side of these offerings is that each of them can be scaled with in a range. Once you provision a cache service you get the endpoint URL and security keys.
In the Azure management portal you get other options like dashboard, configuration options to create named cache instances and scaling options.
Accessing Windows Azure Cache Service in a .NET application
First install the Windows Azure Cache assembly from NuGet.
This adds some configuration settings to your config file as well. This is where you specify your endpoint URL and the security key.
The programming model is simple and straight forward. We can use the DataCache class in Microsoft.ApplicationServer.Caching to access the cache. This is the same class we use in accessing the role based Windows Azure Cache as well.
A very crude code sample.
1: static void CacheTest()
2: {
3: var cache = new DataCache("default");
4: Console.WriteLine(cache.Name);
5:
6: cache.Add("key", "12");
7:
8: var value = cache.Get("key");
9: Console.WriteLine(value);
10: }
MSDN link for the Windows Azure Cache (Preview) Development.