I did something tonight I haven't done in a while; I attended a Java User Group Meeting. The topic was Terracotta, presented by Orion Letizi. Terracotta is an open source product to support scalable applications. One simple use case is to support session state. Like ASP.NET can send session state to an external server, you could use a Terracotta server to support session state from a cluster of application servers.
But Terracotta does much more than this. It actually clusters multiple instances of Java Virtual Machines (JVMs) in a way that is transparent to the application. Plain Old Java Objects (POJOs) can be clustered across multiple JVMs using normal Java programming syntax. The bottom line is that multiple applications across multiple machines can all work on the same Java objects.
Another great feature of Terracotta is that only changes need to be communicated from a client to the Terracotta server (and any other clients caching the data). So if one property on an object changes, only that change need be communicated. This should provide major performance improvements in the session state scenario, where only changed data will need to be sent from the client to the Terracotta server.
There was brief mention of this technology being available for .NET, although I'm not holding my breath. It would certainly be valuable in supporting scalable web applications. If you're working in Java, take a look.