Orleans grains 使用可观察的生命周期进行有序激活和停用。这允许在grain 激活和收集期间以有序的方式启动和停止grain逻辑,系统组件和应用逻辑。
Stages
预定义的grain生命周期阶段如下。
public static class GrainLifecycleStage { public const int First = int.MinValue; public const int SetupState = 1000; public const int Activate = 2000; public const int Last = int.MaxValue; }
First
- grain生命周期的第一阶段SetupState
- 激活前设置grain状态。对于有状态的grain,这是从储存中装载的阶段。Activate
- 存储OnActivateAsync
和OnDeactivateAsync被调用
阶段Last
- grain生命周期的最后阶段
虽然谷物生命周期将在谷物活化期间使用,但由于谷物在某些错误情况下(例如筒仓碰撞)并非总是停用,因此应用程序不应依赖谷物生命周期始终在谷物停用期间执行。
粮食生命周期参与
应用程序逻辑可以通过两种方式参与grain的生命周期:grain可以参与其生命周期,和/或组件可以通过grain激活上下文访问生命周期(请参阅IGrainActivationContext.ObservableLifecycle)。
粒子总是参与其自己的生命周期,因此可以通过覆盖参与方法来引入应用程序逻辑。