Orleans:构建高性能分布式Actor服务
上QQ阅读APP看书,第一时间看更新

2.5.1 Grain内部状态的持久化

Orleans运行时提供了两种标识有状态Grain的方法:

1)通过IPersistentState<TState>类型及PersistentStateAttribute特性标注从Grain类型的构造函数中注入。

2)将Grain类型直接派生自Grain<TState>基类。

采用第一种方式进行Grain内部状态的存储具有更强的灵活性及可配置性,Orleans运行时推荐开发人员在应用程序中优先使用。以下代码展示了如何使用IPersistentState<TState>类型的内部属性,将UserGrain中的购物车状态和用户信息状态分别存储于不同StorageProvider中。

若采用直接继承自Grain<TState>基类的实现方式,Orleans运行时则只支持通过StorageProviderAttribute特性标注绑定单一种类的外部存储接口。