I recently downloaded and had a look at Velocity aka Microsoft Distributed Cache. The team released CTP 1 in early July so it will be interesting to see how Velocity develops over the coming months. The basic idea is to provide a general purpose, distributed, in-memory cache. The cache is provided in the form of a cluster with load balancing behind the scenes. The below diagram helps to explain.
The cache cluster includes a configurable number of cache hosts, each running as a Windows Service. The cluster requires a network share to distribute configuration data including the eviction and expiration policy. Velocity includes a console application to administer the cache.
Velocity doesn't include disk persistence so if the cluster goes down, the cache is reset. You can however attach metadata tags to cache items. This makes it really easy to retrieve groups of objects based on matching metadata.
Working with the cache is pretty straight forward from a .NET application. The Velocity install includes client API with the usual CRUD operations. Here's an example of adding a string to the cache.
CacheFactory CacheCluster1 = new CacheFactory();
Cache Cache1 = CacheCluster1.GetCache("Cache1");
Cache1.Add("cachedStringKey1","This string will be stored in cache");
Velocity is targeted at clustered web environments where you can gain some performance benefits by having clustered in-memory state. The Velocity team have also provided a SessionStateStoreProvider that allows you to use it for managing your session state. Here's an article that explains how to configure your ASP.NET application to use Velocity for custom session state. One can only assume that Velocity will become a part of IIS in a future release?