Thursday 22 July 2010

Microsoft AppFabric (former Velocity code name)

I visited yesterday a "Introduction to AppFabric caching" session in Microsoft offices in Raanana. The session was held by AppFabric team developer - Shani Pozin. In this post I'd like to summarize the session for those who missed it and as a reminder for myself.

What is AppFabric Caching?

1. A successor of Velocity - a distributed cache service
2. A part of AppFabric - Microsoft vision of application server
3. A competitor to Memcached, NCache and others

What does it do?

It provides an abstract level of clustered distributed caching for serializable objects. Cached data is stored in different physical machines in order to enable High Availability. Each value is stored in two machines (if configured) Primary and Secondary. If Primary fails, then Secondary becomes Primary and another machine becomes Secondary. If Secondary fails, another machine is chosen to be secondary.

What are additional things it knows to do?

1. There is support for locking objects they are retrieved from cache. It is provided by GetAndLock and PutAndUnlock methods. It is important to mention, that if object is locked by one thread the other one will receive an exception and will not be blocked.
2. There is support for versioning cached objects. If a thread is trying to Put an older version of cached object, it will experience an exception, saying that it has to get the most updated version from cache.

What it does not do?

1. It does not persist cached data, which is different than Velocity worked. There were several options for data persistency: SQL Server, XML file, MDF file.
3. It does not provide Read-through and Write-behind features. It is promised, that they will be supported in future releases

If/when the presentation will be available on the web, I'll put a link here.