Introducing the Satellite Pattern for Orleans

Microsoft Orleans implements a Virtual Actor Model with what it calls Grains, and as a result, it is important for developers interacting with grains to not consider their lifecycle. That is, a grain shouldn’t be seen as created, activated, deactivated, or deleted. It is expect that the grain will exist when you need it. When modelling application state as a function of aggregate grain state, it is important not to expose grain lifecycle events as part of that aggregate. The most common example is a platform by which users are represented by one or more grains and may become “online” or “offline”. This article describes a pattern in which such state is maintained in a secondary system to be consumed or communicated outward, hereby described as the Satellite Pattern.

Read More