I listened to Erik Meijer’s keynote at a developer conference I attended a while ago and on his way to convince us that SQL is bad he mentioned ActorFX framework.
I find the concept of an actor in the cloud to which you can push function delegates on the fly really interesting. The framework is still in early alpha stages and that is to a certain extent true for documentation too The code snippets are a bit inconsistent, but the accompanying text explains the concept very clearly.
So what are these actors in the cloud? Here is how I understand the thing:
- The actor can keep anything as its state and that includes function delegates or actor methods from uploaded assemblies. As far as an actor is concerned function delegates are part of its state, behaviour is state.
- Actors can run in a cluster, with state being replicated amongst them
- Clients can change actor state or add new things to state (which includes assemblies with actor methods)
- There is no need to recycle actor when uploading new versions of actor methods, the behaviour of the actor changes immediately
- Clients can subscribe to updates made by other clients
- Actors support transactions and idempotence
The example Erik showed during his keynote was an observable list that lived in the cloud, but given how flexible actors are you could implement actors that are able to do many different things.
More details about ActorFX can be found here.